【问题标题】:Limiting output from reducer in Map reduce API在 Map reduce API 中限制 reducer 的输出
【发布时间】:2017-02-17 05:45:40
【问题描述】:

在我的 mapreduce 程序中,reducer 的输出产生 100 万行输出,但我只需要最初的前 3 行输出。为此,我在我的 Reducer 类中维护一个实例变量,该变量计算它所看到的记录数,并在 3 之后停止发出它们。但减速器仍然必须遍历所有 100 万条记录。有没有办法在读取前 3 条记录后立即停止执行以提高代码的性能。

而且在这里我必须让 reducer 计数为 1 ,这样我的实例变量计数才能正常工作,这也会降低程序的性能。

谢谢,非常感谢您的帮助。

【问题讨论】:

  • 我从没想过这种情况,真的,好问题 :)

标签: hadoop mapreduce hadoop2 reduce


【解决方案1】:

在您的情况下,您可以将 reducer 的数量设置为 1,在此类中,您可以计算前 3 行并为它们发出输出,然后忽略任何其他输入。这不会阻止框架继续为映射器计算的所有键调用 reduce() 方法。

如果可能,您应该减少映射器级别、组合器或分区器的输出。

AFAIK 没有办法让 reduce 停止进程。

【讨论】:

  • 我做了同样的事情..只是在寻找一些更优化的方法来提高我的 reducer 代码的性能..在我的情况下我也无法限制 Map 端的输出数据。跨度>
  • 您正试图停止减速器,您应该向它提供更少的数据。为了提高性能,您应该开始考虑使用 Spark。
猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 2013-08-20
  • 1970-01-01
相关资源
最近更新 更多