4

我对 Hbase 和 Map Reduce API 非常陌生。
我对 Map Reduce 概念感到非常困惑。我需要使用 MAPReduce API 将文本文件加载到 Hbase 表中。我搜索了一些示例,但我可以找到 MAPPER () 而不是 reducer 方法。我对何时使用 mapper 以及何时使用 Reducer () 感到困惑。

我的想法是这样的:

  1. 要将数据写入 Hbase,我们使用映射器
  2. 要从 HBASE 读取数据,我们使用 mapper 和 reducer()。请任何人详细解释我。
  3. 我正在尝试将文本文件中的数据加载到 HBASE 表中。我用谷歌搜索并尝试了一些代码,但我不知道如何加载文本文件并在 HBASE mapreduce API 中读取。

我真的很感谢你的帮助

4

3 回答 3

5

关于您的问题:

  • Mapper接收数据拆分并返回一对键 set<values>
  • Reducer接收 Mapper 的输出,生成一对 <key, value >

通常,您的Reducer任务将写入结果(到文件系统或 HBase),但 Mapper 也可以这样做。有些MapReduce作业不需要Reducer。关于从 HBase 读取,Mapper 类具有从哪个表读取的配置。但是没有什么关系 Mapper 是阅读器,Reducer 是作者。这篇文章“HBase MapReduce 示例”提供了有关如何使用MapReduce读取和写入 HBase 的很好的示例。

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

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

我将.mbox 文件的导入器写入 HBase。看一下代码,它可能会给你一些想法。

将数据导入 HBase 后,您确实需要编写MapReduce作业来操作该数据。

于 2012-12-11T10:27:10.087 回答
1

HFileOutputFormatCompleteBulkLoad结合使用是在 HBase 中加载数据的最佳且最快的方法。您将在此处找到示例代码

于 2013-12-02T15:39:01.593 回答
0

以下是我的几个回应,它们解决了将数据加载到 HBASE 中的问题。

以编程方式将数据批量加载到 HBase 的最快方法是什么?

使用 MultipleOutputs 在 MapReduce 中写入 HBase

编辑:根据评论添加附加链接此链接可能有助于使文件可用于处理。
在 Hadoop MapReduce 脚本中导入外部库

于 2012-08-31T15:16:09.253 回答