我正在使用表属性创建一个表骨架
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;
桌子还没有被压缩。你能不能让我知道桌子没有被压缩的原因。
提前感谢您的投入。
答案 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