我是Hbase和Map Reduce API的新手。
我对Map Reduce概念非常困惑。我需要使用MAPReduce API将文本文件加载到Hbase表中。我用谷歌搜索了一些例子,但我发现MAPPER()不是减速器方法。我很困惑何时使用mapper以及何时使用Reducer()。
我想的方式如下:
我真的非常感谢你的帮助
答案 0 :(得分:5)
关于你的问题:
通常,您的 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