2015-09-01 20 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