【问题标题】:HBase Mapreduce output to hdfs & HBASeHBase Mapreduce 输出到 hdfs 和 HBASEe
【发布时间】:2012-03-14 16:30:30
【问题描述】:

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

我想要一些 reducer 输出到 hdfs 并且一些 reducer 输出被写入 hbase 表。可以将减速器配置为像这样输出到两个不同的位置/格式吗?

【问题讨论】:

    标签: mapreduce hbase hdfs


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果你不想写太多代码,只需在你的 mapper 或 reducer 的 setup 方法中打开一个 Table 并在你的 hbase 表中执行一个 put 语句。另一方面,编写您的作业,使输出文件为 hdfs 文件。这样你就可以同时写入 hbase 和 hdfs。

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

      另外,不要忘记在您的 cleanup() 方法中关闭表格和其他任何内容。唯一的背景是,假设有 1000 个映射器,您的表连接将打开 1000 次,但在任何给定点,只有真正运行的映射器的最大数量,因此可能是 50,具体取决于您的设置。至少对我有用!

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多