如何将parquet文件格式和snappy压缩插入配置单元表?

ibrsph3r  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(515)

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压缩尝试了同样的方法,但似乎效果不太好。我开始思考这是否可能。感谢您的帮助。

edqdpe6u

edqdpe6u1#

当心那辆车 TBLPROPERTIES .
应该是的 TBLPROPERTIES("parquet.compression"="SNAPPY") 而不是 TBLPROPERTIES("parquet.compress"="SNAPPY"); 我测试了两个案例,第一个非常好。
测试环境:cloudera cdh 5.13

ifsvaxew

ifsvaxew2#

检查它是否被压缩的最好方法之一是使用 parquet-tools .

create external table testparquet (id int, name string) 
  stored as parquet 
  location '/user/cloudera/testparquet/'
  tblproperties('parquet.compression'='SNAPPY');

insert into testparquet values(1,'Parquet');

现在,当您查看文件时,它可能没有 .snappy 在任何地方

[cloudera@quickstart ~]$ hdfs dfs -ls /user/cloudera/testparquet
Found 1 items
-rwxr-xr-x   1 anonymous supergroup        323 2018-03-02 01:07 /user/cloudera/testparquet/000000_0

让我们进一步检查一下。。。

[cloudera@quickstart ~]$ hdfs dfs -get /user/cloudera/testparquet/*
[cloudera@quickstart ~]$ parquet-tools meta 000000_0 
creator:     parquet-mr version 1.5.0-cdh5.12.0 (build ${buildNumber}) 

file schema: hive_schema 
-------------------------------------------------------------------------------------------------------------------------------------------------------------
id:          OPTIONAL INT32 R:0 D:1
name:        OPTIONAL BINARY O:UTF8 R:0 D:1

row group 1: RC:1 TS:99 
-------------------------------------------------------------------------------------------------------------------------------------------------------------
id:           INT32 SNAPPY DO:0 FPO:4 SZ:45/43/0.96 VC:1 ENC:PLAIN,RLE,BIT_PACKED
name:         BINARY SNAPPY DO:0 FPO:49 SZ:58/56/0.97 VC:1 ENC:PLAIN,RLE,BIT_PACKED
[cloudera@quickstart ~]$

它是 snappy 压缩的。

相关问题