0

特に認証機関の模擬試験からのこの質問は、私には意味がありません。誰でも助けることができますか?

質問 :
マッパーがキーと値のペアを発行する際のワード カウントの問題です。各単語をキーとして、リテラル 1 が値として発行されます。次に、レデューサーは、受け取ったリテラル "1" ごとにカウンターをインクリメントします。Qnは「コンバイナーとして既存のレデューサーコードを使用できますか?」

正解は のように表されます。"YES" , sum タスクは交換可能かつ結合的であるため、可能です。

しかし、私の理解では、2 つのシナリオで 2 つの異なる回答が得られるため、答えは「いいえ」である必要があります。そして、同じレデューサーとコンバイナーのコードは、「受け取ったリテラル 1 ごとにカウンターを増やす」代わりに、受け取った値だけカウンターを増やす別のアプローチを採用する場合にのみ使用できると思います。

例でそれを考えると、最初にコンバイナのない仮説的なケースを考えてみましょう. to, [1,1,1]) レデューサー o/p は (to,3) になります

しかし、コンバイナーでは、map1 o/p がコンバイナーに供給されると、コンバイナー o/p は (to,2) になります。レデューサー i /p は (to, [2,1]) になります。次に、リデューサーで、リテラル 1 値ごとにカウンターのみをインクリメントします。つまり、リテラル 2 を破棄し、o/p は (to,1) になります。

コンバイナーを使用すると、o/p は (to,1) になり、コンバイナーを使用しない場合、o/p は (to,3) になります。

私がこれのどこかで間違っている場合、またはそうでない場合は、私を助けてください。

Bikal Basnet さん、ご回答ありがとうございます。

4

1 に答える 1

2

あなたの理解は正しいですが、古典的なMapReduceワードカウントアプリケーションでは、リデューサーをコンバイナーとして使用できます。WordCountの 37 行目を見てください。それは:

sum += val.get();

そしてそうではありません:

sum += 1;
于 2014-02-10T03:15:35.053 に答える