私は減速がコンバイナmap reduceでコンバインドフェーズなしで減速機への入力は何になりますか?
<What,1,1,1> <do,1,1> <you,1,1> <mean,1> <by,1> <Object,1>
<know,1> <about,1> <Java,1,1,1>
<is,1> <Virtual,1> <Machine,1>
<How,1> <enabled,1> <High,1> <Performance,1>
から以下の入力を受け取り、私の疑問は、私がコンバイナをスキップしてマッパーが への出力を渡すことができますどのような場合であるコンバイナ http://www.tutorialspoint.com/map_reduce/map_reduce_combiners.htm
でのMapReduceのためのチュートリアルを読んでいます(コンバイナを使用せずに)グループ化操作を実行せずに、シャッフルおよびソートフェーズを通過できるようにします。
マッパーフェーズが終わった後、シャッフルとソートフェーズを経て、どの入力が減算器に送られますか?
レデューサーの入力を確認できますか?
上記のチュートリアルの例では、コンバイナを使用すると、減速器が2回実行されると思います。一度グループ分けを行い、再び出力を出す。私は減速機のコードでsystem.out .printlnを使いログの出力を見た。当初、それはグループ化を実行し、次いで還元剤はを放出する。結果はコンバイナーの有無にかかわらずmapreduceと同じです。 –
raj
これは、「一度グループ化を行い、再度出力を出す」という誤りです。結合演算は、マッパーの出力で実行されます。これは、通常、指定されたキーの値のサブセットになります。シャッフルされてソートされません。 1回の実行を減らすだけで、キーのすべてのキーと値のペアが保証されます。したがって、この場合のコンバイナは、ネットワークを介して送信されるデータの量を減らすために、いくつかの初期集約を行うことができ、ジョブを終了するために縮小を実行します。 –
私は、減速機がコンバイナーと減速機の役割を果たしていると言っています。最初に減速器のforループでは、コンバイナの出力にを与えるワードの合計を実行し、この出力は減速器のフェーズの入力として取られます。今度はのval.getは3を与え、同じものが最終出力としてレデューサーによって放出されます。 –
raj