gpt4 book ai didi

hadoop - 对同一个配置单元表进行多次压缩

转载 作者:可可西里 更新时间:2023-11-01 15:49:56 24 4
gpt4 key购买 nike

我有一个按年/月分区的 Hive 表,它包含至少 7 年的数据。我想做的是通过 Snappy 压缩最新数据(比如最多 1 年的数据),但通过更好的压缩技术(如 gzip 等)压缩旧数据。我如何在 Hive 中执行此操作?

最佳答案

您可以使用不同的压缩设置覆盖不同的分区。配置压缩编解码器并使用此编解码器插入要压缩的覆盖分区。

活泼的:

set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec; 
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

使用 snappy 编解码器覆盖分区:

--enable dynamic partitions
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

--use where conditions to limit new data only
insert overwrite table table_name partition(partition_key)
select * from table_name where partition_key <your condition here> ;

对于 gzip 使用 GzipCodec:

set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec; 
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec;

使用 gzipcodec 覆盖分区:

--enable dynamic partitions
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

--use where conditions to limit OLD data only
insert overwrite table table_name partition(partition_key)
select * from table_name where partition_key <your condition here> ;

通过这种方式,您可以为不同的分区使用不同的压缩编解码器。并且在选择这些表时不需要指定编解码器。 Hive 会自动识别应该使用哪个编解码器进行解压。

当然,这与 ORC 或 parquet 等自包含文件格式无关。它们可以有自己的压缩属性。例如 orc.compress=SNAPPY

关于hadoop - 对同一个配置单元表进行多次压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789167/

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