Как создать разделы в таблице Hbase как разделы таблицы Hive

Мы планируем перейти с CDH3 на CDH4, в рамках этой миграции мы также планируем внедрить HBASE в систему, поскольку она также обновляет данные, в CDH3 мы используем Hive в качестве хранилища.

Здесь у нас есть основная проблема в миграции, Hive поддерживает разделы таблиц. Наша система имеет много таблиц в разных схемах, и в некоторых таблицах есть разделы на основе даты, у нас есть история данных за последние 5 лет (в некоторых таблицах существует 365 * 5 разделов).

Мы хотим добиться того же поведения и в HBase, когда я просматривал, я не смог найти решение для создания разделов в HBase. Может ли кто-нибудь помочь мне в создании этого раздела мудрого создания таблицы в HBase.

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

Если HBASE не поддерживает это, то другое (например, MangoDB, Cassandra) поддерживает наше поведение.

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

2 ответа

HBase имеет понятие, близкое к разделу, который называется регион. однако эти разделы в HBase не работают как разделы Hive (или RDBMS). Каждый регион содержит диапазон клавиш, но вы можете разбить диапазон клавиш на более мелкие регионы, разделив или разделив его - например, если ваш исходный регион содержит ключи 0-9, вы можете разделить его на две меньшие области 0-4 и 5-9 или десять перегородки 0,1,2... и т. д.

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

Тем не менее, вы должны заметить, что ключ, в котором наиболее значимые байты являются последовательными, замедлит ваши записи (может не быть проблемой, если вы выполняете однократную загрузку) проблему, называемую "горячей точкой" - вы можете прочитать об этом и пример подхода, преодолевающего его в блоге Алекса Баранау из sematext

Боюсь, вы не можете разделять данные в HBase, как в Hive. Оба эти инструмента сильно отличаются друг от друга как по дизайну, так и по поведению. Данные в HBase вроде уже разделены для вас, поскольку HBase разделяет пространство ключей, и каждый раздел - это то, что мы называем таблицей. Если вам все еще нужно более детализированное разбиение, вы можете достичь этого, используя разумные семейства столбцов.

Например, вы можете иметь семейство столбцов для каждого года. Таким образом, у вас будет таблица с 5 семействами столбцов.


Редактировать:

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

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