Что (действительно) происходит в HDFS во время обновления улья? - PullRequest
0 голосов
/ 25 октября 2018

Вот ситуация:

  1. Известно, что HDFS доступна только для добавления (без обновления само по себе ).
  2. Hive записывает данные в свое хранилище, которое находится в HDFS.
  3. Обновления могут выполняться в Hive

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

Я искал, но пока не смог найти никакой информации об этом.

1 Ответ

0 голосов
/ 25 октября 2018

Данные для таблицы хранятся в наборе базовых файлов. Новые записи, обновления и удаления сохраняются в дельта-файлах.

Для каждой транзакции, которая изменяет таблицу, создается новый набор дельта-файлов.Во время чтения считыватель объединяет базовый и дельта-файлы, применяя любые обновления и удаляя по мере чтения.

Впоследствии основное сжатие объединяет большие дельта-файлы и / или базовый файл в другой базовый файл с периодическим интерваломвремя, которое ускорит дальнейшую операцию сканирования таблицы.

Ниже приведена документация для поддержки этого: https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions

Надеюсь, это поможет.

...