【问题标题】:Multiple Output in Reducer减速机多路输出
【发布时间】:2012-02-19 20:25:39
【问题描述】:

我正在开发简单的 map reduce 程序。我想在 reducer 之后为键中的每个不同单词创建不同的文件。例如,在执行 Mapreduce 后,我有类似

优先级 1 x 2

优先级 1 和 2

优先级 1 z 2

优先级 2 x​​ 2

优先级2 y 2

现在我想要减少阶段后的不同文件,说 Priority1 和 Priority2 根据优先级具有所有这些值。我正在使用 java,想知道在 reducer 中应该写什么以获得这种输出?

我只是想知道这是否可能,或者是否可以解决或解决这个问题? 我使用的是 Hadoop 0.20.203,因此多输出不起作用。

任何指针都会有所帮助。 谢谢您的帮助! 阿图尔

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    您需要先创建一个partioner 类,根据您的条件进行分区。

    然后您需要创建自己的outputformat 类和recordwriter 类。

    recordwriter 类,需要根据您的需要写入不同的文件。此外,如果您需要对值进行排序,请为您的关键字段创建 comparator 类。

    【讨论】:

    • 特别是当您创建输出格式时,您究竟如何处理为每个单词创建一个新文件?通常在调用 OutputFormat.getRecordWriter(context) 时会创建输出文件,那么您怎么知道该文件的名称是什么?
    【解决方案2】:

    看看MultipleOutputs

    【讨论】:

    • 我查看了 MultipleOutputs,但它在 hadoop 0.20.203 中不可用。我很抱歉我忘了在我的问题中提到 hadoop 的版本。谢谢!!阿图尔
    • 啊,好的。好吧,我也可以问。 :) 你看到stackoverflow.com/questions/2180101/…了吗?
    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 2018-09-10
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多