Apache Nifi 1.7.1 PutHive3Streaming Hive 3.0 - сжатие управляемых таблиц - PullRequest
0 голосов
/ 24 октября 2018

Я использую PutHive3Streaming для загрузки avro-данных из Nifi в Hive.Например, я отправляю данные Json размером 10 МБ в Nifi, преобразовываю их в Avro (уменьшая размер до 118 КБ) и использую PutHive3Streaming для записи в таблицу управляемых кустов.Однако, я вижу, что данные не сжимаются в улье.

hdfs dfs -du -h -s /user/hive/warehouse/my_table*
32.1 M  /user/hive/warehouse/my_table  (<-- replication factor 3)

На уровне таблицы у меня есть:

STORED AS ORC
  TBLPROPERTIES (
    'orc.compress'='ZLIB',
    'orc.compression.strategy'='SPEED',
    'orc.create.index'='true',
    'orc.encoding.strategy'='SPEED',
    'transactional'='true');

, и я также включил:

hive.exec.dynamic.partition=true
hive.optimize.sort.dynamic.partition=true
hive.exec.dynamic.partition.mode=nonstrict
hive.optimize.sort.dynamic.partition=true
avro.output.codec=zlib
hive.exec.compress.intermediate=true;
hive.exec.compress.output=true;

Похоже, что несмотря на это, сжатие не включено в Hive.Любые указатели, чтобы включить это?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Да, @KM верен настолько, что необходимо использовать сжатие.

a) Для управления размером данных необходимо использовать стратегии сжатия Hive.Только после сжатия данные кодируются.Ниже приведены свойства по умолчанию для автоматического сжатия.

hive.compactor.delta.num.threshold=10
hive.compactor.delta.pct.threshold=0.1

b) Несмотря на то, что это значение по умолчанию, одной из проблем, с которыми я столкнулся при сжатии, является то, что дельта-файлы, написанные nifi, были недоступны (возможность удаления)очистителем уплотнения (после самого уплотнения).Я исправил это, используя пользователя куста в качестве владельца таблицы, а также предоставив пользователю улья «права» на файлы дельты в соответствии со стандартами, изложенными в Kerberos.

d) Еще одна проблема, с которой я продолжаю сталкиваться, заключается взапуск заданий автоматического уплотнения.В моем случае, поскольку дельта-файлы продолжают поступать в куст для данной таблицы / раздела, самое первое основное задание на сжатие успешно завершается, удаляет дельты и создает базовый файл.Но после этого автокомпактные задания не запускаются.И улей накапливает огромное количество дельта-файлов.(которые должны быть очищены вручную <--- не желательно) </p>

0 голосов
/ 01 ноября 2018

Hive не сжимает данные, вставленные API-интерфейсом для потоковой передачи данных.
Они будут сжаты при выполнении сжатия.
См. https://cwiki.apache.org/confluence/display/Hive/Streaming+Data+Ingest+V2#StreamingDataIngestV2-APIUsage

Если вы не хотите ждать, используйте ALTER TABLE your_table PARTITION(key=value) COMPACT "MAJOR".

...