【问题标题】:Finding Hive/Impala table's compression details查找 Hive/Impala 表的压缩详细信息
【发布时间】:2018-07-01 02:19:17
【问题描述】:
我将表格从一种格式转换为另一种格式,从未压缩格式转换为压缩格式(Snappy、Gzip 等)。
我以为我可以依靠describe [formatted|extended] tblname 直到我读到这篇文章。 DESCRIBE Statement
说明
压缩字段不是表是否包含压缩数据的可靠指标。它通常始终显示“否”,因为压缩设置仅在加载数据的会话期间应用,并且不会与表元数据一起永久存储。
如何确定表是否已压缩以及使用的编解码器?我不介意使用 Spark 获取该信息。
【问题讨论】:
标签:
apache-spark
hive
pyspark
codec
impala
【解决方案1】:
回答我的问题:
对于 Avro 数据文件:avro-tools getmeta filename
Parquet 数据文件:parquet-tools meta filename
【解决方案2】:
正如您所说,“describe formatted”和“show create table”方法并不总是保证包含正确的压缩格式信息。
识别压缩编解码器和存储格式最可靠的方法是去表文件的HDFS位置,查看它们的扩展名:
hdfs dfs -ls -r /hdfspath/
例如,以 snappy 压缩的 ORC 文件应以 .snappy.orc 结尾。
【解决方案3】:
首先想到的是检查这个 Hive/MR 属性:
hive.exec.compress.output=
mapreduce.output.fileoutputformat.compress=
mapreduce.output.fileoutputformat.compress.codec=
mapreduce.output.fileoutputformat.compress.type=