首页 > 其他分享 >0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析

0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析

时间:2022-10-04 14:01:14浏览次数:71  
标签:string 无法访问 hive snappy Snappy Hive parquet test table

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https://github.com/fayson/cdhproject​


提示:代码块部分可以左右滑动查看噢


1

问题重现


  • 测试环境:

1.CDH6.2

2.集群已开启Kerberos

3.Redhat7.4


1.已经准备好一个Parquet文件的表。


hive> show create table hive_table_test_parquet_snappy;
OK
CREATE TABLE `hive_table_test_parquet_snappy`(
`s1` string,
`s2` string,
`s3` string,
`s4` string,
`s5` string,
`s6` string,
`s7` string,
`s8` string,
`s9` string,
`s10` string,
`s11` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
'hdfs://ip-172-31-6-83.ap-southeast-1.compute.internal:8020/user/hive/warehouse/hive_table_test_parquet_snappy'
TBLPROPERTIES (
'transient_lastDdlTime'='1557893659')
Time taken: 0.133 seconds, Fetched: 22 row(s)
hive>


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hadoop


2.此表的HDFS的大小为4.3GB


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_02


3.操作目标:把此hive表(hive_table_test_parquet)在表结构不变,数据内容不变的情况下压缩存储,得到新表(hive_table_test_parquet_snappy,此表记录数跟内容跟hive_table_test_parquet应该完全一致,但hdfs文件应该显著变小)


4.设置Hive压缩,并新建另外一张表。


set hive.exec.compress.output=true;
set hive.parquet.compression=snappy;

create table hive_table_test_parquet_snappy as select * from hive_table_test_parquet;


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hadoop_03

0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hadoop_04


5.查看压缩存储后的表hive_table_test_parquet_snappy的数据:(正常)


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hadoop_05


6.通过查看HDFS文件大小,可以看到压缩存储后的文件小了:


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_06


7.用impala查看压缩存储后的表结构及数据,先查看未压缩存储的表:正常


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_07


8.然后查看压缩存储后的表:不正常


[ip-172-31-12-142.ap-southeast-1.compute.internal:21000] default> select *from hive_table_test_parquet_snappy limit 1;   
Query: select *from hive_table_test_parquet_snappy limit 1
Query submitted at: 2019-05-15 00:05:38 (Coordinator: http://ip-172-31-12-142.ap-southeast-1.compute.internal:25000)
Query progress can be monitored at: http://ip-172-31-12-142.ap-southeast-1.compute.internal:25000/query_plan?query_id=c6434c4543e6fd8b:9624686200000000
ERROR: Scanner plugin 'DEFLATE' is not one of the enabled plugins: 'LZO'


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_压缩存储_08


报错:

ERROR: Scanner plugin 'DEFLATE' is not one of the enabled plugins: 'LZO'



2

问题分析


1.查看hive_table_test_parquet_snappy表的底层文件


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_09


可以发现生成文件的后缀都是deflate,deflate是区别于snappy,gzip的其他压缩格式。这种格式目前在Impala中还不支持,而Hive能支持,导致同样的表在Hive中能查询,而在Impala中查询不了。即在通过Parquet表生成同样的snappy压缩格式的文件时失败,主要是hive.parquet.compression参数Hive不认识。


3

问题解决


1.重新生成hive_table_test_parquet_snappy表,使用以下语句:


set parquet.compression=SNAPPY;
create table hive_table_test_parquet_snappy stored as parquet as select * from hive_table_test_parquet;


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_10

0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_11


2.使用Hive查看该表的schema以及进行查看,都正常。


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_12


3.使用Impala查询,也正常。


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_压缩存储_13


4.查看hive_table_test_parquet_snappy的底层文件


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_14


使用parquet-tools命令能查看该文件,说明是parquet文件,里面显示文件的压缩是snappy


5.与之前的parquet文件的大小进行比较


0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hadoop_15


发现已经被压缩,文件有缩小。


4

问题总结


1.为什么使用Hive生成的“snappy”文件无法被Impala查询,是因为生成的并不是snappy文件,而是deflate的压缩文件,而该压缩在Impala中并不支持。

2.如果源表(bbb)是parquet格式的文件表,使用create aaa as select * from bbb;语句并不能让aaa表也是parquet格式,而是textfile的,需要使用create aaa stored as parquet as select * from bbb;

3.如果需要让Hive生成Snappy的压缩表,并不需要设置set hive.exec.compress.output=true;与set hive.parquet.compression=snappy;,只需要设置set parquet.compression=SNAPPY;即可,另外hive.parquet.compression该参数是Hive不支持的。


提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

0632-6.2-通过Hive生成的Snappy表Impala无法访问异常分析_hive_16

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


标签:string,无法访问,hive,snappy,Snappy,Hive,parquet,test,table
From: https://blog.51cto.com/u_14049791/5731249

相关文章

  • 如何使用Sentry管理Hive仓库目录外的其他目录的acl同步
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • Hive CLI禁用补充说明
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 0458-Hive数据类型校验问题分析
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 0508-如何使用Hadoop的Archive处理小文件
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 0468-如何使用DBeaver访问Kerberos环境下的Hive
    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:​​https://github.com/fayson/cdhproject​​提示:代码块部分可......
  • 0841-7.1.6-Aqua Data Studio工具安装及访问安全环境的Hive和Impala
    作者:冯庆煜1.文档编写目的AquaDataStudio是一款完整IDE的数据库开发工具,它提供3种主要功能:数据查询与管理工具。比对数据工具与源控制和文件系统的整合工具。帮助你创建,编......
  • 0840-6.3.4-Aqua Data Studio工具安装及访问安全环境的Hive和Impala
    作者:冯庆煜1.文档编写目的AquaDataStudio是一款完整IDE的数据库开发工具,它提供3种主要功能:数据查询与管理工具。比对数据工具与源控制和文件系统的整合工具。帮助你创建,编......
  • 0816-CDP Hive3升级说明
    文档编写目的CDH5中的Hive版本是1.1,而CDP7中的Hive版本为3。Hive3相对Hive1更新特别多,比如支持全新的ACIDv2机制,并且底层使用Tez和内存进行查询,相比MR的方式性能提升超过10......
  • 0869-7.1.7-如何在CDP中使用Hive Bulkload批量导入数据到HBase
    1.文档编写目的在遇到将Hive中的数据同步到HBase时,一般都是通过在Hive中创建映射HBase的表,然后通过insert的方式来实现,在数据量小的时候,往往还能接受,但是如果是大批量数据,除......
  • Hive 时间相关函数汇总
    Hive时间相关函数汇总文章目录​​Hive时间相关函数汇总​​​​时间转换​​​​**from_unixtime/unix_timestamp**​​​​日期格式相互转换​​​​时间戳转日期格式​......