如何从命令行从CSV批量加载到Hbase

时间:2015-09-01 10:50:51

标签: hadoop hbase

我正在尝试使用命令行执行bulkload,这是一个csv文件。

这就是我正在尝试的

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?  

是否可以在不使用java mapreduce的情况下从命令行执行bulkload。

2 个答案:

答案 0 :(得分: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)

希望这有帮助。

答案 1 :(得分:0)

您可以从命令行

进行批量加载

有多种方法可以做到这一点,

  1. 一个。通过使用HFileOutputFormat从MapReduce作业创建数据文件(StoreFiles)来准备数据。

    湾使用completebulkload工具导入准备好的数据

    例如:hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] / user / todd / myoutput mytable

    more detailshbase bulk load

  2. 2。 使用 importtsv 例如:

    HBase的> hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator =, - Dimporttsv.columns =" HBASE_ROW_KEY,id,temp:in,temp:out,振动,压力:in,压力:out&#34 ; sensor hdfs://sandbox.hortonworks.com:/tmp/hbase.csv more details