HBase Mapreduce 输出到 hdfs & HBASe



我有一个mapreduce程序,它首先扫描HBase表。

我希望一些reducer输出到hdfs,一些reduce输出写到hbase表。减速器是否可以配置为像这样输出到两个不同的位置/格式?

可以将reducer配置为使用MulitpleOutputs类使用多个文件进行输出。该类顶部的文档为写入多个文件提供了一个清晰的示例。然而,由于没有用于写入HBase的内置Outputformat,您可以考虑将第二个流写入HDFS上的特定位置,然后使用另一个作业将其插入HBase。

如果您不想写太多代码,只需在映射器或reducer的设置方法中打开一个表,并在hbase表中执行put语句。另一方面,编写作业,使输出文件为hdfs文件。通过这种方式,您可以同时写入hbase和hdfs。

更详细地说,当你执行context.write()时,你会写入hdfs文件,另一方面,table.put可能发生在你执行put时。

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

我认为多个输出可以完成这项工作。。chk tis outhttp://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

相关内容

  • 没有找到相关文章

最新更新