Hive2.1
我有下表定义:
CREATE EXTERNAL TABLE table_snappy (
a STRING,
b INT)
PARTITIONED BY (c STRING)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION '/'
TBLPROPERTIES ('parquet.compress'='SNAPPY');
现在,我想在其中插入数据:
INSERT INTO table_snappy PARTITION (c='something') VALUES ('xyz', 1);
然而,当我查看数据文件时,我看到的只是没有任何压缩的普通Parquet文件。在这种情况下,如何启用snappy压缩?
目标:以Parquet格式和snappy压缩配置单元表数据。
我也尝试过设置多个属性:
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;
SET mapreduce.output.fileoutputformat.compress=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET PARQUET_COMPRESSION_CODEC=snappy;
以及
TBLPROPERTIES ('parquet.compression'='SNAPPY');
但是没有什么是有用的。我用gzip压缩尝试了同样的方法,但似乎效果不太好。我开始思考这是否可能。感谢您的帮助。
2条答案
按热度按时间edqdpe6u1#
当心那辆车
TBLPROPERTIES
.应该是的
TBLPROPERTIES("parquet.compression"="SNAPPY")
而不是TBLPROPERTIES("parquet.compress"="SNAPPY");
我测试了两个案例,第一个非常好。测试环境:cloudera cdh 5.13
ifsvaxew2#
检查它是否被压缩的最好方法之一是使用
parquet-tools
.现在,当您查看文件时,它可能没有
.snappy
在任何地方让我们进一步检查一下。。。
它是
snappy
压缩的。