私はHadoopを学び始めましたが、MapReduceに少し混乱しています。結果がネイティブにキーと値のペアのリストであるタスクの場合、すべてが明確に見えます。しかし、結果が単一の値(たとえば、入力小数の2乗の合計、または入力ポイントの重心)であるタスクをどのように解決すればよいかわかりません。
一方では、マッパーのすべての結果を同じキーに入れることができます。しかし、この場合、私が理解している限り、唯一のレデューサーがデータのセット全体を管理します(合計または平均座標を計算します)。それは良い解決策のようには見えません。
私がイメージングできるもう1つの方法は、マッパーの結果をグループ化することです。たとえば、例0〜999を処理したマッパーは0に等しいキーを生成し、1000〜1999は1に等しいキーを生成します。レデューサーの結果が複数ある限り、レデューサーのチェーンを構築する必要があります(結果が1つだけになるまでリデュースが繰り返されます)。計算効率ははるかに高く見えますが、少し複雑です。
Hadoopに、データ全体を単一の値に削減する効率を最大化するために、レデューサーの重ね合わせを実行する既成のツールがあることを願っています。見つかりませんでしたが。
結果が単一の値であるタスクを解決するためのベストプラクティスは何ですか?