HBase shell
不是爲這些目的而設計的,它只允許用put命令逐行插入數據到HBase。
取而代之,您可以使用importtsv
工具,該工具允許您將文本數據直接導入到HBase。
假設你已經創建HBase的表so_table
有一列家庭cf1
和你example.nt
文件是在/tmp/example/
HDFS目錄。因此,這可以通過以下的方式來使用它:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,cf1:val1,cf1:val2,cf1:val3 so_table /tmp/example/
可能是你將需要添加選項來改變列分隔符:
-Dimporttsv.separator=';'
而且你應該明白,直接通過這樣的數據插入到HBase的許多人把命令。還有另一種使用importtsv
工具的方法,它非常適合批量加載大量輸入數據。您可以生成StoreFiles,然後用completebulkload
工具完全加載到HBase的:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output=/tmp/example_output -Dimporttsv.columns=HBASE_ROW_KEY,cf1:val1,cf1:val2,cf1:val3 so_table /tmp/example/
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/example_output so_table
你可以閱讀該工具的官方文檔:https://hbase.apache.org/book.html#_importtsv
你可能要考慮通過蜂巢將在HBase的表中的數據,檢查該鏈接並嘗試一下https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration – mbaxi