我想知道如何压缩配置单元外部表中包含json数据的Parquet文件。怎么做?
我创建了如下外部表:
create table parquet_table_name3(id BIGINT,created_at STRING,source STRING,favorited BOOLEAN) ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe' LOCATION '/user/cloudera/parquet2';
我设置了压缩属性
set parquet.compression=GZIP;
并通过执行
GZIP <file name> ( i.e 000000_0.Parquet)
之后,我将压缩的gzip文件加载到hdfs位置 /user/cloudera/parquet2
接下来我将尝试运行下面的查询
select * from parquet_table_name3;
我得到了下面的结果
NULL NULL NULL NULL
NULL NULL NULL NULL
你能让我知道为什么我得到空值而不是结果,如何做Parquet文件压缩(如果它包含json数据)在配置单元外部表?有人能帮我在 hive 外桌里压缩吗?
1条答案
按热度按时间ve7v8dk21#
哼!不能“从外部”压缩现有的Parquet地板文件。这是一种列格式,内部结构极其复杂,就像兽人一样;文件“ backbone ”需要快速随机访问(即不压缩),每个数据块必须单独压缩,因为它们是单独访问的。
当您创建一个新的parquet文件时,您请求serde库根据
parquet.compression
配置单元属性。在读取时,serde然后检查每个数据文件的压缩编解码器并相应地解压缩。
快速的google搜索会返回一些必读内容,比如这个和那个。