其他分享
首页 > 其他分享> > impala3.4.0安装

impala3.4.0安装

作者:互联网

 

Impala安装

建议通过cloudera cm安装

不建议单独RPM安装:https://blog.csdn.net/m0_38003171/article/details/79851240

 

Impala使用

 

登录

impala-shell

 

同步hive元数据

invalidate metadata;  #同步hive元数据

show databases;         #查看同步之后的数据库

 

创建数据库

create database db_hive_test;

 

在impala-shell创建表

CREATE TABLE IF NOT EXISTS hive_test

(

s1 int,

s2 string,

s3 string,

s4 string

) row format delimited fields terminated by '|'

 

在impala-shell执行查询

select count(*) from hive_test;

 

描述表:

describe hive_test;

 

删除表:

drop table hive_test;

 

修改表:

alter table hive_test add columns (s5 int);

 

创建视图:

create view hive_test_view as select * from hive_test_view where s1 = 1;

 

删除表/清空表

drop table if exists table_name;

truncate table table_name;        #(先删除,再创建)

 

表重命名:

alter table table_name rename new_table;

 

描述表详情:

desc extended hive_test;

 

压缩

在Impala中,parquet存储格式的默认压缩方式为snappy。通过以下命令可以修改该配置:

set compression_code=snappy; (snappy,none,gzip...)

 

设置Parquet 格式存储

创建表的时候可以通过 STORED AS PARQUET 语句来指定文件的存储格式

CREATE TABLE hive_test_parquet LIKE hive_test STORED AS PARQUET;

可以使用 Insert 语句来将一张旧表中的数据拷贝到新的 Parquet 存储格式的表中

INSERT OVERWRITE TABLE hive_test_parquet SELECT * FROM hive_test;

检查 Parquet 表的创建

SHOW TABLE STATS hive_test_parquet ;

Parquet 是一种柱状存储格式,所有在查询中选择更少的列会让查询执行更快。我们应该尽量避免以下这种查询方式:SELECT * FROM hive_test_parquet;

导入的数据全部都是null,原因:create table时需要指定分隔符策略,row format delimited fields terminated by '|';

 

向Hive导入数据

已完成表创建,从本地文件导入到Hive

load data local inpath '/home/data/store_sales.dat' into table store_sales;

 

load data inpath 从hdfs导入

查看hadoop文件

hadoop fs -ls /

新建文件夹

hadoop dfs -mkdir /input

上传本地文件

vi test1.txt

# 键入内容保存wq!

上传文件

hadoop fs -put test1.txt  /input

查看文件

hadoop fs -ls /input

hadoop fs -cat /input/test1.txt

 

加载本地文件到hive

load data local inpath '/input/test1.txt' into table default.student;

 

加载数据覆盖表中已有的数据

load data inpath '/input/test1.txt' overwrite into table default.student;

 

使用sqoop从数据库导入

sqoop import --connect jdbc:mysql://S0:3306/big_data_test --username root --password 1qaz@WSX --table store_sales  -m 1 --hive-import --hive-database db_hive_test  --hive-table store_sales

 

分区表

创建表分区

create table if not exists hive_partition_test66(

 id int,

 name string,

 phone string,

 address string

 )

 partitioned by (year int,month int)

 row format delimited

 fields terminated by "|"

 lines terminated by "\n"

 stored as PARQUET;

 

插入数据

insert into hive_partition_test66 PARTITION (year=2020,month=1) values(1,'张三','18600000000','哈尔滨'),(2,'李四','18700000000','哈尔滨');

insert into hive_partition_test66 PARTITION (year=2020,month=2) values(3,'王五','18800000000','哈尔滨'),(4,'马六','18900000000','哈尔滨');

 

特殊说明

在使用impala创建分区表时,可能出现以下异常:

ERROR: AnalysisException: Unable to INSERT into target table (db_hive_test.hive_partition_test44)

because Impala does not have WRITE access to HDFS location: hdfs://S0:8020/user/hive/warehouse/db_hive_test.db/hive_partition_test44

原因分析:默认情况下,如果插入语句创建任何新的子目录下面的分区表,这些子目录分配权限的用户默认的HDFS的权限。使每个子目录具有相同的权限为在HDFS的父目录,指定--insert_inherit_permissions启动选项的impalad守护。

 

我使用的是cloudera manager,在下图

第四页的mpala Daemon 命令行参数高级配置代码段中新增--insert_inherit_permissions

之后重启Impala服务即可。

其他解决方案:手动更改HDFS目录权限,参考命令如下:

hdfs dfs -chmod -R 777 /user/hive/warehouse/db_hive_test.db/hive_partition_test/

注意事项:hdfs集群上更改数据库表权限之后,一定要记住登录到impala-shell上使用invaladate metadata命令进行元数据更新,否则更改的权限在impala状态下是不生效的

 

查看表分区

show partitions hive_partition_test;

 

删除分区:

alter table hive_partition_test drop partition(year=2020,month=1);

 

增加分区:

alter table hive_partition_testadd partition(year=2020,month=3);

 

正确使用Impala的invalidate metadata与refresh语句

如果数仓中发生了增删表或改变表结构的行为,如create table、drop table、alter table add column等,就使用invalidate metadata [table]语句。

如果数仓中某表加入了新数据,或者有分区的改动,如load data、alter table add partition等,就使用refresh [table] (partition [partition])语句。

invalidate metadata比起refresh而言要重量级得多,并且它造成impalad之间查询不一致也会更严重。因此,也几乎禁止使用不带表名的invalidate metadata语句。

如果数仓中涉及到非常大批量的元数据更改,那么建议直接重启catalogd和statestored,这总比使用不带表名的invalidate metadata来得高效一些。

 

更多HBASE参照请参考:

https://blog.csdn.net/qq_41837900/article/details/90578798

 

与SpringBoot和Mybatis集成

https://github.com/gm19900510/springboot-1.x-bigdata

https://github.com/gm19900510/springboot-2.x-bigdata

以上项目包含与SpringBoot和Mybatis集成和多数据源切换,欢迎Clone、Star

 

 

 

 

 

标签:--,partition,hive,impala3.4,test,table,安装,metadata
来源: https://blog.csdn.net/leveretz/article/details/113846273