我有tsv格式的数据,我想将其插入到hbase中,问题是每个字段都包含在"'""" (单引号)。
如何在导入命令中提供它:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output = output1 -Dimporttsv.columns = HBASE_ROW_KEY,data:employee_id,data:employee_name,data:designation,data:telephone_number,data:artist_mbid, employees / emp
我发现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 INFILE'输出' INTO TABLE员工FIELDS TERMINATED BY' \ t' 选择性地包含在'"'由' \ n'
终止的线路
答案 0 :(得分:1)
我假设您的数据如下
'值1' '值2' '值3'
因此我没有使用tab作为分隔符,而是使用('')进行了测试。单引号,选项卡,单引号使用-Dimporttsv.separator。但这不起作用,因为ImportTsv将接受单字节长度的分隔符。
所以看起来,根据文档,您需要使用类似于ImportTsv的-Dimporttsv.mapper.class实现自己的映射器,并根据您的需要进行调整。有关ImportTsv的基本概念,请参阅here。
毕竟,你正在运行map reduce,所以你不会失去延迟