Многократное сжатие на одном столе улья - PullRequest
0 голосов
/ 11 июня 2018

У меня есть таблица Hive, разделенная по годам / месяцам, и она содержит данные как минимум за 7 лет.Что я хочу сделать, это сжать самые последние данные (например, до 1 года) через Snappy, но более старые данные с помощью лучшего метода сжатия, такого как gzip и т. Д. Как я могу выполнить это в Hive?

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете перезаписать разные разделы с разными настройками сжатия.Настройте кодек сжатия и вставьте перезаписываемые разделы, которые вы хотите сжать с помощью этого кодека.

Для snappy:

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 или паркет.Они могут иметь свои собственные свойства сжатия.Например orc.compress = SNAPPY

...