Hadoop 蜂巢拼花地板弹性压缩不起作用

Hadoop 蜂巢拼花地板弹性压缩不起作用,hadoop,hive,hiveql,parquet,snappy,Hadoop,Hive,Hiveql,Parquet,Snappy,我正在使用表属性创建一个表骨架 tblproperty('PARQUET.COMPRESSION'='SNAPPY') (因为文件是拼花格式)并在创建表格之前设置几个参数,如下所示: set hive.exec.dynamic.partition.mode=nonstrict; set parquet.enable.dictionary=false; set hive.plan.serialization.format=javaXML; SET hive.exec.compress.output

我正在使用表属性创建一个表骨架
tblproperty('PARQUET.COMPRESSION'='SNAPPY')

(因为文件是拼花格式)并在创建表格之前设置几个参数,如下所示:

set hive.exec.dynamic.partition.mode=nonstrict;
set parquet.enable.dictionary=false;
set hive.plan.serialization.format=javaXML;
SET hive.exec.compress.output=true;
SET mapred.output.compression.type=BLOCK;
set avro.output.codec=snappy;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
add jar /opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p1168.923/lib/sentry/lib/hive-metastore.jar;
然而,桌子并没有被压缩。您能告诉我桌子没有压缩的原因吗


提前感谢您的投入。

您的拼花地板桌可能被压缩了,但您并没有直接看到这一点。在拼花文件中,压缩将烘焙到格式中。不是压缩整个文件,而是使用指定的算法压缩各个段。因此,压缩拼花地板从外观上看与压缩拼花地板相同(通常它们不包含任何后缀,就像普通压缩文件一样(例如,
.gz
),因为您无法使用常用工具对其进行解压缩)


将压缩烘焙成拼花地板的形式是拼花地板形式的许多优点之一。这使得文件(hadoop-)可以独立于压缩算法进行拆分,并且可以快速访问文件的特定部分,而无需解压缩整个文件。在查询引擎处理拼花文件顶部的查询的情况下,这意味着它通常只需要读取较小但未压缩的标题,查看哪些部分与查询相关,然后只需解压缩这些相关部分。

我最近创建了一些表,这些表存储为拼花地板文件,具有Snappy压缩功能,并使用了以下命令:

set hive.exec.compress.output=true;
set mapreduce.output.fileoutputformat.compress=true;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set hive.intermediate.compression.type=BLOCK;

我看到这个错误已经犯了好几次了,下面是需要做的事情(这只适用于hive,不适用于SPARK):

旧物业:

TBLProperty('PARQUET.COMPRESSION'='SNAPPY')

正确属性:

TBLProperty('PARQUET.COMPRESS'='SNAPPY')


解决方案是在DDL中使用
“TBLProperty('parquet.compression'='SNAPPY')”
(具体情况)而不是
“TBLProperty('parquet.compression'='SNAPPY')”

您还可以在配置单元中使用以下属性实现压缩

set parquet.compression=SNAPPY

我之所以说这些表没有被压缩,是因为我知道压缩表的大小。正在创建的表没有接近该大小的位置。我丢失或错误地输入了任何参数?我也尝试了上述set命令,但仍然没有得到压缩。您如何检查您的表是否被压缩?我正在使用带有meta的parquet-tools.jar进行检查,并显示未压缩。在创建表之前,我已经使用了这些命令,但仍然没有不走运。还有什么问题?是否检查了表位置的dfs-ls-r,并查看了压缩的文件格式。如果文件是快速压缩的,则此命令的预期输出是什么?我创建了表,并且在使用“描述格式的表\u名称”时执行了所有步骤。它显示了表格参数:列\统计\精确的真实拼花地板。压缩SNAPPY numFiles 1 numRows 0 rawDataSize 0 totalSize 143瞬态时间1516713741我在desc格式的表格中也看到了同样的情况。但是parquet-tools.jar元输出显示文件没有被压缩。这对我的TBLProperty('parquet.COMPRESSION'='SNAPPY')有效。但我需要再添加一个set命令,即set-parquet.compression=snappy;我尝试了这个建议,但仍然不起作用,你能检查一下我做错了什么吗?@annonarcist你在用“hadoop-jar-parquet-tools-1.6.0.jar-meta”来检查压缩是否起作用吗?是的!出于某种原因,它只能在镶木地板凝固后进行。压缩=快速;,我对它进行了压缩。此外,如果您使用CDH,您可以通过以下方式验证压缩=>/opt/cloudera/parcels/CDH/lib/parquet/bin/parquet tools meta you\u table\u data\u文件。
set parquet.compression=SNAPPY