2012-12-17 164 views
9

我对hadoop和hbase非常陌生,并且在我找到的每个教程中都有一些概念性问题让我失望。将csv数据加载到Hbase

我有我的win 7系统上的Ubuntu VM中的单个节点上运行hadoop和hbase。我有一个我想加载到单个hbase表的csv文件。

的列有:loan_number,borrower_name,current_distribution_date,loan_amount

我知道,我需要写一个MapReduce工作这一说csv文件加载到HBase的。以下教程描述编写此MapReduce作业所需的Java。 http://salsahpc.indiana.edu/ScienceCloud/hbase_hands_on_1.htm

什么我缺少的是:

我在哪里保存这些文件,我在哪里编译它们?我应该在运行visual studio 12的win 7机器上编译这个文件,然后将其移至ubuntu vm?

我读这太问题和答案,但我想我还缺少基础:Loading CSV File into Hbase table using MapReduce

我无法找到任何东西覆盖了这些基本的Hadoop/HBase的物流。任何帮助将不胜感激。

回答

15

没有必要到MapReduce工作的代码来批量加载数据到HBase的。有几种方法来批量加载数据到HBase的:

1)使用HBase的工具,如importtsvcompletebulkloadhttp://hbase.apache.org/book/arch.bulk.load.html

2)使用猪批量装载数据。例如:

A = LOAD '/hbasetest.txt' USING PigStorage(',') as 
     (strdata:chararray, intdata:long); 
STORE A INTO 'hbase://mydata' 
     USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
       'mycf:intdata'); 

3)以编程方式使用HBase API。我有一个名为hbaseloader的小项目,它将文件加载到HBase表(它只有一个ColumnFamily与文件的内容)。看看它,你只需要定义表的结构并修改代码来读取一个csv文件并解析它。

4)编程方式使用MapReduce作业,就像你提到的例子。

+0

谢谢!我一定会去探索这些选择。 – bjoern

2
Where do I save these files and where do I compile them? Should I compile this on my win 7 machine running visual studio 12 and then move it to the ubuntu vm? 

您可以将Map Reduce类保存在任何地方(在Win 7或Ubuntu VM中)。你也可以在任何地方编译它。只需用你创建的类创建一个Jar文件,然后在你的虚拟机中创建一个jar文件来运行map reduce。

然后在启动Hadoop后的Ubuntu VM中,可以使用以下命令来运行您创建的map reduce类。

<Path To Hadoop Bin>/hadoop jar <Path to Jar>/<Jar Name>.jar <Map Reduce Class Name> <Class Arguments> ... 

当您运行上述命令时,您所写的Map Reduce类将与Hbase表一起被执行。

希望这有助于