gpt4 book ai didi

在将值发送到 reducer 之前对其进行排序

转载 作者:可可西里 更新时间:2023-11-01 14:45:07 25 4
gpt4 key购买 nike

我正在考虑在 hadoop 中构建一个小型测试应用程序以掌握系统的窍门。

我想到的应用是统计领域。我想从我的 reducer 函数中获得“每个键的 10 个最差值”(我必须假设某些键可能有大量值)。

我的计划是,进入我的 reducer 的值基本上是“实际值”和“实际值的质量/相关性”的组合。基于相关性,我“简单地”想取 10 个最差/最好的值并从 reducer 中输出它们。

我该怎么做(假设特定键有大量值)?有没有一种方法可以让我在将所有值发送到 reducer 之前对它们进行排序(并且在我读取前 10 个值后就停止读取输入)或者必须以不同的方式完成?

这里有人可以指点我可以看一下的示例代码吗?


更新:我发现了两个有趣的 Jira 问题 HADOOP-485HADOOP-686 .

有人有关于如何在 Hadoop 0.20 API 中使用它的代码片段吗?

最佳答案

听起来很像次要排序问题。如果愿意,请查看“Hadoop:权威指南”。它来自 O'Reilly。您也可以在线访问它。他们在那里描述了一个非常好的实现。

我也是自己实现的。基本上它是这样工作的:分区器将处理所有具有相同键的键值对到一个单一的 reducer 。这里没什么特别的。但是还有 GroupingComparator,它将形成分组。一组实际上作为迭代器传递给一个 reduce() 调用。所以一个分区可以包含多个分组。但是分区的数量应该等于 reducer 的数量。但是分组还允许进行一些排序,因为它实现了 compareTo 方法。

使用这种方法,您可以控制 10 个最好/最差/最高/最低的键将首先到达缩减器。因此,在您阅读了这 10 个键之后,您可以离开 reduce 方法而无需任何进一步的迭代。

希望对您有所帮助:-)

关于在将值发送到 reducer 之前对其进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com