使用HBASE MAP REDUCE API将数据加载到Hbase表中

时间:2012-08-31 12:23:02

标签: hadoop mapreduce hbase

我是Hbase和Map Reduce API的新手。
我对Map Reduce概念非常困惑。我需要使用MAPReduce API将文本文件加载到Hbase表中。我用谷歌搜索了一些例子,但我发现MAPPER()不是减速器方法。我很困惑何时使用mapper以及何时使用Reducer()。

我想的方式如下:

  1. 要将数据写入Hbase,我们使用mapper
  2. 从中读取数据 HBASE我们使用mapper和reducer()。请任何人清楚我 详细解释。
  3. 我正在尝试将文本文件中的数据加载到 HBASE表。我用Google搜索并尝试了一些代码,但我不知道,怎么做 加载文本文件并读入HBASE mapreduce API。
  4. 我真的非常感谢你的帮助

3 个答案:

答案 0 :(得分:5)

关于你的问题:

  • 映射器接收数据拆分并返回一对密钥,设置< values>
  • Reducer 接收Mapper的输出并生成一对< key,value>

通常,您的 Reducer 任务将写入结果(到文件系统或HBase),但Mapper也可以这样做。有 MapReduce 作业,不需要 Reducer 。关于从HBase读取,它是Mapper类,具有从中读取表的配置。但没有任何关系,Mapper是读者,Reducer是作家。本文"HBase MapReduce Examples"提供了有关如何使用 MapReduce 读取和写入HBase的良好示例。

在任何情况下,如果您需要将一些.csv文件批量导入HBase,则实际上不需要使用 MapReduce 作业。您可以使用HBase API直接执行此操作。在伪代码中:

table = hbase.createTable(tablename, fields); 
foreach (File file: dir) {
   content = readfile(file);    
   hbase.insert(table, content); 
}

我在HBase中写了importer of .mbox files。看看代码,它可能会给你一些想法。

将数据导入HBase后,您需要对 MapReduce 作业进行编码以对该数据进行操作。

答案 1 :(得分:1)

HFileOutputFormat CompleteBulkLoad 一起使用是在HBase中加载数据的最佳和最快捷方式。 您将找到示例代码here

答案 2 :(得分:0)

以下是我的一些回复,解决了将数据加载到HBASE的问题。

What is the fastest way to bulk load data into HBase programmatically?

Writing to HBase in MapReduce using MultipleOutputs

编辑:根据评论添加其他链接 此链接可能有助于使文件可供处理 Import external libraries in an Hadoop MapReduce script