Ответ 1
Мне нравится использовать Apache Pig для проникновения в HBase, потому что это просто, прямо и гибко.
Вот Pig script, который выполнит эту работу для вас после создания таблицы и семейства столбцов. Чтобы создать таблицу и семейство столбцов, выполните следующие действия:
$ hbase shell
> create 'mydata', 'mycf'
Переместите файл в HDFS:
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
Затем напишите свинью script для хранения с HBaseStorage (вам, возможно, придется искать способ настроить и запустить свинг):
A = LOAD 'file.txt' USING PigStorage(',') as (strdata:chararray, intdata:long);
STORE A INTO 'hbase://mydata'
USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
'mycf:intdata');
Обратите внимание, что в приведенном выше script ключ будет strdata
. Если вы хотите создать свой собственный ключ от чего-то, используйте FOREACH для генерации ключа. HBaseStorage предполагает, что первым в предыдущем соотношении (A::strdata
в этом случае) является ключ.
Некоторые другие варианты:
- Напишите Java MapReduce, чтобы сделать то же самое, что и выше.
- Взаимодействовать непосредственно с HTable с клиентом и помещать строки за строкой. Это нужно делать только с гораздо меньшими файлами.
-
Нажимайте данные с помощью оболочки hbase с помощью своего рода script (т.е. sed, perl, python), который преобразует строки csv в команды оболочки
put
. Опять же, это нужно делать только в том случае, если количество записей невелико.$ cat /home/file.txt | transform.pl put 'mydata', 'one', 'mycf:intdata', '1' put 'mydata', 'two', 'mycf:intdata', '2' put 'mydata', 'three', 'mycf:intdata', '3' $ cat /home/file.txt | transform.pl | hbase shell