2012-03-14 92 views
2

我有第一扫描的HBase的表映射缩减程序。HBase的MapReduce的输出到HDFS&HBASE

我想要一些reducer输出到hdfs和一些reducer输出写入到hbase表。 Reducer可以配置为输出到两个不同的位置/格式吗?

回答

3

甲减速器可被配置为使用MulitpleOutputsclass使用多个文件来输出。该类顶部的文档为写入多个文件提供了一个明确的例子。但是,由于在写入HBase时没有内置Outputformat,因此可以考虑将第二个流写入HDFS上的特定位置,然后使用另一个作业将其插入到HBase中。

1

如果你不想写太多的代码,只需在您的映射的或减速的设置方法打开一个表,做一个PUT语句到您的HBase的表。另一方面,编写你的作业,使输出文件是一个hdfs文件。这样你就可以写入hbase和hdfs。

更精细,当你做一个context.write(),你会写的HDFS文件,并在另一方面,当你做一个投放table.put可能发生。

此外,不要忘记关闭表和cleanup()方法中的其他内容。唯一的背景是,如果有1000个映射器,你的表连接将被打开1000次,但是在任何给定的点上,只有最大映射器数量真正运行,所以根据你的设置,这可能是50。至少适合我!