2015-07-29 5 views
0

Я новичок в hadoop и больших данных, просто пытаясь разобраться в возможностях перемещения моего хранилища данных в hbase в эти дни, и я столкнулся с проблемой, которую некоторые из вас могут быть в состоянии помочь мне. Таким образом, ее как,Интеграция Hive - Hbase Transactional update с отметкой времени

У меня есть таблица Hbase "hbase_testTable" с Column семьи: "ColFam1". Я установил версию «ColFam1» на 10, так как я должен поддерживать историю до 10 обновлений для этого семейства столбцов. Что хорошо работает. Когда я пытаюсь добавить новые строки через hbase shell с явным значением отметки времени, он отлично работает. В основном я хочу использовать временную метку в качестве моего контроля версий. Поэтому я указать метку времени, как

положить 'hbase_testTable' '1001', 'ColFam1: q1', '1000 $', 3

где '3' моя версия. И все работает нормально.

Теперь я пытаюсь интегрировать с Улей внешней таблицы, и я все отображения также установлено, совпадающее Hbase таблицы, как показано ниже:

создать внешнюю таблицу TESTTABLE (идентификатор строки, q1 строку, q2 строку, q3 string) STOREd BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' С SERDEPROPERTIES ("hbase.columns.mapping" = ": key, colfam1: q1, colfam1: q2, colfam1: q3") TBLPROPERTIES ("hbase .table.name "=" testtable "," transactional "=" true ");

И работает нормально с обычной вставкой. Он обновляет таблицу HBase и наоборот.

Несмотря на то, что внешняя таблица сделана «транзакцией», я не могу обновлять данные по ВИЧE. Это дает мне ошибку: FAILED: SemanticException [Ошибка 10294]: попытка выполнить обновление или удаление с помощью диспетчера транзакций, который не поддерживает эти операции. Сказал, что любые обновления, сделанные в таблицах hbase, сразу отражаются в таблице улей.

Я могу обновить таблицу Hbase внешней таблицей улья, пытаясь вставить в внешнюю таблицу улья для «rowid» с новыми данными для столбца.

Можно ли управлять меткой времени, записанной на указанную таблицу hbase (например, 4,5,6,7 ..etc) Пожалуйста, помогите.

ответ

1

Временная метка является одним из важных элементов управления версиями Hbase. Вы пытаетесь создать свою собственную метку времени, которая отлично работает на уровне Hbase. Один момент, вы должны быть очень осторожны, с уникальными и неотрицательными. Вы можете посмотреть Custom Customing в HBase-Definitve Guide book.

Теперь у вас есть Hive на вершине Hbase. В соответствии с документацией,

there is currently no way to access the HBase timestamp attribute, and queries always access data with the latest timestamp. 

Thats for reading part. А для размещения данных вы можете посмотреть here. Он по-прежнему говорит, что вы должны предоставить действительную отметку времени, а не любое другое значение.

Ожидается, что в будущих версиях будет отображаться атрибут timestamp. Надеюсь, у вас есть лучшая идея относительно того, как бороться с пользовательской меткой времени в интеграции Hive-Hbase.

Смежные вопросы