Как избежать прерывания активных запросов Hive / Presto при замене сжатых файлов небольшими файлами в HDFS? - PullRequest
0 голосов
/ 30 августа 2018

У нас есть сотни разделов HDFS, которые мы пишем в каждый час дня. Разделы предназначены для ежедневной загрузки в Hive, и данные записываются в формате Parquet.

Проблема, с которой мы сталкиваемся, заключается в том, что, поскольку мы хотим максимально быстро запросить данные, почасовая запись приводит к множеству маленьких файлов.

Существует множество примеров, таких как Как объединить небольшие файлы паркета в один большой файл паркета? для кода объединения; у меня вопрос как избежать взлома активных запросов людей при перемещении / замене в недавно сжатых файлах маленьких ?

1 Ответ

0 голосов
/ 30 августа 2018

Метастор имеет местоположение файловой системы для каждого раздела. Это местоположение часто основано на таблице и разделе:

hdfs://namenode/data/web/request_logs/ds=2018-05-03

Однако местоположение может быть совершенно произвольным, поэтому вы можете использовать его для реализации изоляции моментального снимка или управления версиями. Когда вы сжимаете файлы в разделе, запишите новые файлы в новое место:

hdfs://namenode/data/web/request_logs/v2_ds=2018-05-03

После того, как уплотнение выполнено, обновите расположение раздела в метастазах, чтобы оно указывало на новое местоположение. Наконец, очистите старое местоположение когда-нибудь в будущем, когда никакие запросы его не используют.

...