2015-10-28 3 views
0

У меня есть данные в форме tsv, и я хочу вставить его в hbase, проблема заключается в том, что каждое поле заключено в «1» (одна цитата).Использование заключено в hbase

Как я могу предоставить его в команде импорта:

HBase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output = output1 -Dimporttsv.columns = HBASE_ROW_KEY данные: employee_id данные: employee_name данные: обозначение, данные: telephone_number данные: artist_mbid, сотрудников/эй

Я обнаружил, что варианты с HBase являются: в https://hbase.apache.org/book.html

importtsv 
Other options that may be specified with -D include: 
    -Dimporttsv.skip.bad.lines=false - fail if encountering an invalid line 
    '-Dimporttsv.separator=|' - eg separate on pipes instead of tabs 
    -Dimporttsv.timestamp=currentTimeAsLong - use the specified timestamp for the import 
    -Dimporttsv.mapper.class=my.Mapper - A user-defined Mapper to use instead of org.apache.hadoop.hbase.mapreduce.TsvImporterMapper 

Я ищу что-то вроде эквивалент команды в MySQL: LOAD DATA входной_файл 'выход' INTO TABLE ПОЛЕЙ работника TERMINATED BY '\ т' OPTIONALLY ENCLOSED BY '"' ЛИНИЙ TERMINATED BY '\ п'

ответ

1

Я предполагаю, что ваши данные, как показано ниже

'value1' 'значение2' 'value3'

Таким образом, вместо того, чтобы использовать вкладки, separato r, я тестировал с использованием (''). Одинарная кавычка, табуляция, одинарная кавычка с использованием -Dimporttsv.separator. Но это не сработало, потому что ImportTsv будет принимать разделитель с длиной одного байта.

Похоже, что на основе документации вам необходимо реализовать свой собственный картограф, используя -Dimporttsv.mapper.class, подобный ImportTsv, и настройку в соответствии с вашими потребностями. См. here для базовой идеи ImportTsv.

В конце концов, вы используете сокращение карты, поэтому вы не теряете латентность

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