Подтвердить что ты не робот

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

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

one,1
two,2
three,3

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

aThanks in dvance....

4b9b3361

Ответ 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