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

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

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

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

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

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


person sunillp    schedule 28.04.2017    source источник


Ответы (1)


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

    но

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

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

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

person David Greenshtein    schedule 10.05.2017