Использование HBase вместо Hive

Сегодня мы используем Hive в качестве хранилища данных, в основном используемое для пакетной / массовой обработки данных - аналитические запросы / объединения hive и т. Д. - конвейер ETL

Недавно мы столкнулись с проблемой, когда пытаемся представить наш ETL-конвейер, основанный на кустах, как сервис. Проблема связана с фиксированной схемой таблицы природы улья. У нас есть ситуация, когда схема таблицы не является фиксированной, она может измениться ex: новые столбцы могут быть добавлены (в любом месте схемы, необязательно в конце), удалены и переименованы.

В Hive, после создания разделов, я думаю, их нельзя изменить, т. Е. Мы не можем добавить новый столбец в старый раздел и заполнить только этот столбец данными. Мы должны заново создать раздел с новой схемой и заполнить данные во всех столбцах. Однако новые разделы могут иметь новую схему и содержать данные для нового столбца (не уверен, можно ли вставить новый столбец в любую позицию в схеме?). Попытка прочитать значение нового столбца из более старого раздела (без изменений) вернет NULL.

Я хочу знать, смогу ли я использовать HBase в этом сценарии и решит ли это мои проблемы выше? 1. вставьте новые столбцы в любую позицию в схеме, удалите столбец, переименуйте столбец 2. выполните обратную засыпку данных в новый столбец, т. Е. Для более старых данных (в более старых разделах) заполните данные только в новом столбце без повторного создания раздела / повторного заполнения данных в другие столбцы.

Я понимаю, что Hbase без схемы (без схемы), т.е. каждая запись / строка может иметь различное количество столбцов. Не уверен, что HBase имеет концепцию разделов?

1 ответ

  1. Вы правы HBase - это база данных, не включающая схемы (семейства столбцов все еще исправлены)
  2. Вы сможете создавать новые столбцы
  3. Вы сможете заполнять данные только в новом столбце без повторного создания раздела / повторного заполнения данных в других столбцах.

    но

  4. К сожалению, HBase не поддерживает разделы (говоря в терминах Hive), вы можете увидеть это обсуждение. Это означает, что если дата раздела не будет частью ключа строки, каждый запрос будет выполнять полное сканирование таблицы

  5. Переименовать столбец не является тривиальной операцией вообще
  6. Частое обновление существующих записей между основными интервалами уплотнения увеличивает время ответа на запрос

Я надеюсь, что это полезно.

Другие вопросы по тегам