我在考虑在hadoop中构建一个小测试应用程序以获取系统的挂起。在将值发送给reducer之前对值进行排序
我想到的应用程序将在统计领域。 我想从我的reducer函数(其中我必须假设可能有大量值用于某些键)中得到“每个键的10个最差值”。
我的计划是,进入我的减速机的价值基本上是“实际价值”和“实际价值的质量/相关性”的组合。 基于相关性,我“简单地”想要采用10个最差/最佳值并从减速器输出它们。
我该如何去做(假设特定键的数量巨大)? 有没有一种方法可以在将它们发送到reducer之前对所有值进行排序(并且在读完第一个10时停止读取输入)或者必须以不同的方式完成这些操作?
有人可以在这里指出我可以看一看示例代码吗?
更新:我发现了两个有趣的问题吉拉和HADOOP-485HADOOP-686。
任何人都有关于如何在Hadoop 0.20 API中使用它的代码片段?
嗯,据我了解合并的目的是为“这是一个特定节点上运行的部分减速”。在那个时候我不能截断结果,因为我不知道当时的价值的总体“质量”。 – 2009-10-01 10:13:03
更新:有趣的建议。这样做(组合已经截断的子集)通常会导致与“确切”的做法不同的输出。这对我的情况可能会足够好。我会考虑的。谢谢。 – 2009-10-01 20:05:54
你能解释为什么这会导致不同的输出?我认为,全球排名前10位的项目肯定包含在每个分区的前10项(可能是前3名,后2名,前5名 - 但他们都在那里)。 – SquareCog 2009-10-01 21:02:55