Мне нравится использовать Apache Pig для загрузки в HBase, потому что он прост, понятен и гибок.
Вот сценарий Pig, который сделает эту работу за вас после того, как вы создали таблицу и семейство столбцов. Чтобы создать таблицу и семейство столбцов, вам нужно сделать:
$ hbase shell
> create 'mydata', 'mycf'
Переместить файл в HDFS:
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
Затем напишите сценарий pig для хранения с HBaseStorage (вам может понадобиться посмотреть, как настроить и запустить Pig ):
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');
Обратите внимание, что в приведенном выше сценарии ключ будет strdata
. Если вы хотите создать свой собственный ключ из чего-либо, используйте оператор FOREACH для генерации ключа. HBaseStorage предполагает, что первым в предыдущем отношении (A::strdata
в данном случае) является ключ.
Некоторые другие опции:
- Запишите Java MapReduce , чтобы сделать то же самое, что и выше.
- Взаимодействуйте напрямую с HTable с клиентом и вставляйте построчно. Это должно быть сделано только с гораздо меньшими файлами.
Передайте данные с помощью оболочки hbase, используя какой-то сценарий (то есть, 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