2015-10-28 45 views
0

我有tsv格式的數據,我想將它插入到hbase中,問題是每個字段都被「'」(單引號)括起來。在hbase中使用封閉的

我如何能夠提供其在導入命令:

HBase的org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output =輸出1 -Dimporttsv.columns = HBASE_ROW_KEY,數據: EMPLOYEE_ID,數據:employee_name,數據:指定數據:TELEPHONE_NUMBER,數據:artist_mbid, 員工/ 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 TERMINATED BY '\ t' OPTIONALLY ENCLOSED BY '「' 結尾BY '\ n'

LINES TABLE員工FIELDS

回答

1

我假設你的數據如下

「值1」「值」「值3」

因此,而不是使用選項卡作爲separato r,我使用('')進行測試。單引號,選項卡,單引號使用-Dimporttsv.separator。但是這不起作用,因爲ImportTsv將接受單字節長度的分隔符。

因此,基於文檔,您需要使用類似於ImportTsv的-Dimporttsv.mapper.class來實現自己的映射器,並根據需要進行調整。有關ImportTsv的基本概念,請參閱here

畢竟,你正在運行一個地圖縮小,所以你不會丟失等待時間