我正在编写一个 mapReduce 作业,该作业从一个巨大的数据集中找到与一个点的距离最短的 k 个对象。
在我的映射器中,我只想报告该数据块距离最短的 k 个对象。这样,对于每个数据块,我都有 k 个中间值(键,值),其中键是距离,值是 object_id。所以在我的 reducer() 中,我可以轻松地处理和总结 k 个最小值。
我想不出一种方法来仅报告与我的映射器类中的一个数据块的点距离最短的 k 对象的中间键值对?
我知道我可以为该数据块中的所有输入数据返回 (distance,obj_id) 作为中间键值对,然后在我的减速器类中减少它并获得相同的结果。但是 k <<(每个数据块中的数据数量)并且通过只报告 k 个中间键值而不是全部,我可以显着减少数据传输/改组的数量。
任何帮助表示赞赏
谢谢