ポイントからの距離が最も短い巨大なデータセットから k 個のオブジェクトを見つける mapReduce ジョブを作成しています。
私のマッパーでは、そのデータ ブロックの最小距離を持つ k オブジェクトのみを報告したいと考えています。このように、キーが距離で、値が object_id であるデータのブロックごとに k 中間 (キー、値) があります。したがって、私の reducer() では、k 個の最低値を簡単に処理して要約できます。
マッパー クラスの 1 つのデータ ブロックのポイントからの距離が最も短い k オブジェクトの中間のキーと値のペアのみをレポートする方法が思い浮かびませんか?
そのデータ ブロック内のすべての入力データの (distance,obj_id) を中間のキーと値のペアとして返し、レデューサー クラスでそれを減らして同じ結果を得ることができることを私は知っています。しかし、k << (各データ ブロック内のデータ数) と、すべてではなく k 個の中間キー値のみを報告することで、データ転送/シャッフルの量を大幅に削減できます。
どんな助けでも大歓迎です
ありがとう