gpt4 book ai didi

hadoop - 如何插入具有 Parquet 文件格式和 SNAPPY 压缩的配置单元表?

转载 作者:可可西里 更新时间:2023-11-01 16:24:31 27 4
gpt4 key购买 nike

hive 2.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 压缩进行了同样的尝试,但似乎效果不佳。我开始考虑是否可能。任何帮助表示赞赏。

最佳答案

检查它是否被压缩的最佳方法之一是使用 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 压缩的。

关于hadoop - 如何插入具有 Parquet 文件格式和 SNAPPY 压缩的配置单元表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49064376/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com