我想知道如何压缩 Hive 外部表中包含 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;
并通过执行压缩我的输入 Parquet 文件
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
你能告诉我为什么我得到的是空值而不是结果吗?如何在 hive 外部表中进行 parquet 文件压缩(如果它包含 json 数据)?谁能帮我在 Hive 外部表中压缩?
最佳答案
呃!您不能“从外部”压缩现有的 Parquet 文件。它是一种柱状格式,内部结构极其复杂,就像 ORC;文件“骨架”需要快速随机访问(即不压缩),并且每个数据 block 都必须单独压缩,因为它们是单独访问的。
当您创建一个新的 Parquet 文件时,您请求 SerDe 库根据 parquet.compression
压缩文件中的数据> Hive 属性。
在读取时,SerDe 然后检查每个数据文件的压缩编解码器并相应地解压缩。
关于hadoop - 是否可以压缩配置单元外部表中包含 Json 数据的 Parquet 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37946846/