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

标签 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 外部表中进行 parquet 文件压缩(如果它包含 json 数据)?谁能帮我在 Hive 外部表中压缩?

最佳答案

呃!您不能“从外部”压缩现有的 Parquet 文件。它是一种柱状格式,内部结构极其复杂,就像 ORC;文件“骨架”需要快速随机访问(即不压缩),并且每个数据 block 都必须单独压缩,因为它们是单独访问的。

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

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

关于hadoop - 是否可以压缩配置单元外部表中包含 Json 数据的 Parquet 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37946846/

相关文章:

hadoop - Pig Latin区分Map或Reduce查询

hadoop - Zookeeper和Storm的错误

hadoop - 我可以在创建表时在配置单元中一次使用 2 个字段终止符(如 ',' 和 '.' )吗?

hadoop - HDFS:dfs.block.size的确切含义

json - nginx日志解析工具

hadoop - Hive 查询语言仅返回与另一个表中的值不同的值

Hadoop 分布式缓存 (Cloudera CH3)

hadoop - pig 错误 : Unhandled internal error. 找到接口(interface) org.apache.hadoop.mapreduce.TaskAttemptContext,但类是预期的

java - 如何使用Java API将配置单元字符串查询转换为抽象语法树?

apache - 无法将 Sentry 与 Hive 绑定(bind)