蜂巢镶木地板snappy压缩不工作

时间:2018-01-23 07:10:23

标签: hadoop hive hiveql parquet snappy

我正在使用表属性创建一个表骨架 TBLPROPERTIES('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;

桌子还没有被压缩。你能不能让我知道桌子没有被压缩的原因。

提前感谢您的投入。

5 个答案:

答案 0 :(得分:1)

您的Parquet表可能已被压缩,但您并未直接看到它。在Parquet文件中,压缩被压缩成格式。而不是整个文件被压缩,使用指定的算法压缩各个段。因此,压缩的Parquet将从外部看起来与压缩的一样(通常它们不包括像普通压缩文件那样的任何后缀(例如.gz),因为您无法使用常用工具对它们进行解压缩)。

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

答案 1 :(得分:0)

我最近使用Snappy压缩创建了一些存储为Parquet文件的表,并使用了以下命令:

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;

答案 2 :(得分:0)

Set the below parameters and after that perform below steps-

SET parquet.compression=SNAPPY; 
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET mapred.output.compression.type=BLOCK;

CREATE TABLE Test_Parquet ( 
    customerID int, name string, ..etc 
) STORED AS PARQUET Location ''

INSERT INTO Test_Parquet SELECT * FROM Test;

If not how do i identify a parquet table with snappy compression and parquet table without snappy compression?.

describe formatted tableName

Note  -  but you will always see the compression as NO because the compression data format is not stored in 
metadata of the table , the best way is to do dfs  -ls -r  to the table location and see the file format for compression.

Note- Currently the default compression is - Snappy with Impala tables. 


If your issue didn't resolved after these steps also please post the all steps which are you performing..?

答案 3 :(得分:0)

我看到这个错误已经完成了几次,这里需要做的事情(这只适用于蜂巢。不适用于SPARK):

旧物业:

  

TBLPROPERTIES(' PARQUET.COMPRESSION' =' SNAPPY&#39)

正确的财产:

  

TBLPROPERTIES(' PARQUET.COMPRESS' =' SNAPPY&#39)

答案 4 :(得分:0)

解决方案是在DDL中使用“TBLPROPERTIES ('parquet.compression'='SNAPPY')”(和案例很重要)而不是“TBLPROPERTIES ('PARQUET.COMPRESSION'='SNAPPY')”.

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

set parquet.compression=SNAPPY