是否可以压缩配置单元外部表中包含json数据的Parquet文件?

7eumitmz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(371)

我想知道如何压缩配置单元外部表中包含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 外桌里压缩吗?

ve7v8dk2

ve7v8dk21#

哼!不能“从外部”压缩现有的Parquet地板文件。这是一种列格式,内部结构极其复杂,就像兽人一样;文件“ backbone ”需要快速随机访问(即不压缩),每个数据块必须单独压缩,因为它们是单独访问的。
当您创建一个新的parquet文件时,您请求serde库根据 parquet.compression 配置单元属性。
在读取时,serde然后检查每个数据文件的压缩编解码器并相应地解压缩。
快速的google搜索会返回一些必读内容,比如这个和那个。

相关问题