0

私がやろうとしていることを説明するために、単語数の例を少し変えて説明します。

私は 3 つのマッパーを持っており、それぞれが 3 つの大きな入力ファイルで完全な単語カウント結果を生成しています。出力は次のようになります。

Mapper 1 Result:
-------
cat 100
dog 50
fox 10

Mapper 2 Result:
-------
fox 200
pig 5
rat 1

Mapper 3 Result:
-------
dog 70
rat 50
fox 10

各結果は、指定されたファイルの一意のキー、カウント結果を持つ完全な単語数であることに注意してください。

レデューサー側では、私のアルゴリズムではレデューサーが 1 つだけである必要があります。ここで説明するには少し長すぎる理由から、各マッパーからの結果をカウントの降順でレデューサーにフィードする必要がありますが、何も実行しません。シャッフルとソートのステップ。つまり、キーによるグループ化を行わずに、各マッパーから次の順序でリデューサーが結果を受け取るようにします。

cat 100
dog 50
fox 10

fox 200
pig 5
rat 1

dog 70
rat 50
fox 10

つまり、値(キーではない)の降順で各マッパーの結果をレデューサーにロードするだけです

4

1 に答える 1

1

Shuffle と Sort を発生させたくないので、これは Map のみのジョブであるように思われます。

本当にReduceを使用する必要がある場合は、複合キーを用意してセカンダリソートを行う必要があることをお勧めします。

キーには、マッパー ID、通常のキー、およびカウント値が含まれます。マッパーIDで一次ソートを行い、カウントで二次ソートを行います。また、何もグループ化しない (またはマッパー ID と通常のキーのみでグループ化する) グループ化コンパレータも必要です。

繰り返しますが、Shuffle と Sort を防ぐためだけに Reducer を使用するために必要なすべてのことを見ると、出力が単一のファイルにある必要がない限り、これは Map のみのジョブであるように思われます。

于 2013-10-28T14:43:10.767 に答える