是否可以在hive外部表中压缩包含Json数据的Parquet文件?

时间:2016-06-21 14:12:59

标签: hadoop hive cloudera hiveql parquet

我想知道如何在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外表中进行拼花文件压缩(如果它包含json数据)?有人可以帮我压缩蜂巢外部表吗?

1 个答案:

答案 0 :(得分:2)

咄!您无法从外部&#34;压缩现有的Parquet文件&#34;。它是一种具有非常复杂的内部结构的柱状格式,就像ORC一样;文件&#34;骨架&#34;需要快速随机访问(即无压缩),并且每个数据块必须单独压缩,因为它们是单独访问的。

当您创建新的Parquet文件时,您请求SerDe库根据parquet.compression压缩文件 中的数据 Hive属性。
在读取时,SerDe然后检查每个数据文件的压缩编解码器并相应地解压缩。

快速Google搜索会返回一些必读,例如thisthat