2015-09-01 21 views
0

我正在嘗試使用命令行執行一個bulkload,它是一個csv文件。如何從命令行的CSV從一個批量加載到Hbase

這是我想

bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles hdfs://localhost:9000/transactionsFile.csv bulkLoadtable 

我得到的錯誤是下面:

15/09/01 13:49:44 WARN mapreduce.LoadIncrementalHFiles: Skipping non-directory hdfs://localhost:9000/transactionsFile.csv 
15/09/01 13:49:44 WARN mapreduce.LoadIncrementalHFiles: Bulk load operation did not find any files to load in directory hdfs://localhost:9000/transactionsFile.csv. Does it contain files in subdirectories that correspond to column family names? 

是否有可能做的命令行的bulkload不使用Java的MapReduce。

回答

0

你幾乎是正確的,唯一遺漏的是bulkLoadtable的輸入必須是目錄。我建議將csv文件保存在一個目錄下,並將路徑傳遞給目錄名作爲該命令的參數。請參考下面的鏈接。

https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.html#doBulkLoad(org.apache.hadoop.fs.Path,%20org.apache.hadoop.hbase.client.Admin,%20org.apache.hadoop.hbase.client.Table,%20org.apache.hadoop.hbase.client.RegionLocator)

希望這會有所幫助。

+0

@Alka,你能解決這個問題嗎? – sureshsiva

0

您可以從命令行執行批量加載,

有多種方法可以做到這一點,

  1. 一個。通過使用HFileOutputFormat從MapReduce作業創建數據文件(StoreFiles)來準備數據。

    b。使用completebulkload工具

    例如導入準備的數據:hadoop的罐子HBase的-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /用戶/託德/ MyOutput中MYTABLE

    more detailshbase bulk load

2. 使用importtsv 例如:

HBase的> HBase的有機.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator =,-Dimporttsv.columns =「HBASE_ROW_KEY,id,temp:in,temp:out,vibration,pressure:in,pressure:out」sensor hdfs:// sandbox .hortonworks.com:/tmp/hbase.csv more details