Импорт данных из HDFS в HBase (cdh3u2)

Я установил hadoop и HBase cdh3u2. В hadoop у меня есть файл на пути /home/file.txt. он имеет такие данные, как

one,1
two,2
three,3

Я хочу импортировать этот файл в hbase. при этом первое поле должно быть проанализировано как String, а второе поле-как integer, а затем оно должно быть помещено в hbase. Помогите мне сделать это

благодарение в dvance....

1 ответов


мне нравится использовать Apache Pig для глотания в HBase, потому что он прост, прост и гибок.

вот сценарий свиньи, который сделает эту работу за вас, после того, как вы создали таблицу и семейство столбцов. Чтобы создать таблицу и семейство столбцов, выполните следующие действия:

$ hbase shell
> create 'mydata', 'mycf'

переместить файл в HDFS:

$ hadoop fs -put /home/file.txt /user/surendhar/file.txt

затем напишите сценарий свиньи для хранения с HBaseStorage (возможно, вам придется искать как настройка и запуск Свинья!--15-->):

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 в shell 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