ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

impala3.4.0安装

2021-02-19 12:33:22  阅读:811  来源: 互联网

标签:-- partition hive impala3.4 test table 安装 metadata


 

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有