2015-10-30 3 views
0

Как я могу правильно перенести таблицу HBase в Hive?Как переносить таблицу из HBase в Hive?

То, что я пытался, прежде чем вы можете прочитать в этом вопросе How insert overwrite table in hive with diffrent where clauses? (я сделал одну таблицу, чтобы импортировать все данные. Проблема заключается в том, что данные по-прежнему в строках, а не в колонках. Так что я сделал 3 таблицы для новостей, социальный и все с конкретным предложением, после чего я сделал 2 штуки на таблицах, которые дают мне таблицу результатов. Таким образом, у меня было 6 таблиц вообще, что не очень эффективно!)

, чтобы суммировать мою проблему вверх: В HBase находятся столбцы familys, которые сохраняются в виде строк, подобных этому.

count verpassen news 1 
count verpassen social 0 
count verpassen all 1 

То, что я хочу достичь в улье является структура данных, как это:

name  news social all 
verpassen 1  0  1 

Как я должен это делать?

+1

Существует целая страница в [Интеграция Hive-Hbase в wiki] (https: //cwiki.apache.org/confluence/display/Hive/HBaseIntegration) –

+0

Вы можете использовать обработчик hbasestorage в hive – madhu

+0

hbase storage Handler не работает для меня, я получил это исключение: FAILED: SemanticException Не удается найти класс 'org.apache.ha doop.hive.hbase.HBaseStorageHandler ' – dino

ответ

0

Ниже приведен подход использования.

использование HBase обработчика хранилищ данных для создания таблицы в улей

пример сценария

CREATE TABLE hbase_table_1 (ключевую строку, значение строки), сохраняемые «org.apache.hadoop.hive.hbase. HBaseStorageHandler 'WITH SERDEPROPERTIES ("hbase.columns.mapping" = ": key, f1: val") TBLPROPERTIES ("hbase.table.name" = "test");

Я загрузил данные образца, которые вы указали в таблицу внешних улей.

enter image description here

выберите имя, collect_set (CONCAT_WS ('', тип, вал)) ввод от TestTable группы по имени;

я группируют данные по name.The результирующего выходного сигнала для вышеупомянутого запроса будет enter image description here

Теперь я написал пользовательский Mapper, который принимает входной сигнал в качестве входного параметра и испускающий значения.

из (выберите '[ "все, 1", "социальные, 0", "Новости, 1"]' ввод из TestTable группы по имени) г MAP d.input Использование 'питона test.py' а все, социальные, новости

enter image description here

в качестве альтернативы вы можете использовать выход для вставки в другую таблицу, которая имеет имя имен столбцов, все, социальные, новости

Надеется, что это помогает

+0

Когда я пытаюсь создать таблицу, я получил это исключение: Exception FAILED: SemanticException Не удается найти класс' org.apache.ha doop.hive.hbase.HBaseStorageHandler ' – dino

+0

Вы должны добавить jbase jars в папку hive lib. hbase - *. Jar, zookeeper * .jar, hive-hbase-handler * .jar – yoga

+0

zookeeper.jar и hive-hbase-handler-1.2.1 уже там. Но у меня есть много hbase * .jar. например hbase-it-0.98.0-hadoop2.jar или hbase-client-0.98.0-hadoop2.jar. Какой из них правильный? – dino

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