Aコンバイナはマッパー後に実行され、減速前に、それは、入力として与えられたノード上のマッパーインスタンスによって放出された全てのデータを受信する。「コンバイナ」クラスレデューサーに出力を発するその後。MapReduceのジョブに
そしてまた、機能を削減した場合可換と連想の両方で、それはコンバイナとして使用することができます。
私の質問フレーズ「可換と連想は」このような状況で何を意味するのさ?
Aコンバイナはマッパー後に実行され、減速前に、それは、入力として与えられたノード上のマッパーインスタンスによって放出された全てのデータを受信する。「コンバイナ」クラスレデューサーに出力を発するその後。MapReduceのジョブに
そしてまた、機能を削減した場合可換と連想の両方で、それはコンバイナとして使用することができます。
私の質問フレーズ「可換と連想は」このような状況で何を意味するのさ?
はここに連想があなたの操作を取り、任意のサブグループに適用し、それらの結果に適用して得ることができることを意味
1 2 3 4 5 6、あなたは番号のリストを持っていると仮定します同じ回答:
(1) + (2 + 3) + (4 + 5 + 6)
==
(1 + 2) + (3 + 4) + (5) + (6)
==
...
ここで括弧はコンバイナの実行と考えてください。可換
は順序はそれほど重要ではありませんことを意味します。前に見たよう
1 + 2 + 3 + 4 + 5 + 6
==
2 + 4 + 6 + 1 + 2 + 3
==
...
は、例えば、さらには、このプロパティに適合します。 "最大値"は最大値の最大値が最大値であるため、このプロパティにも当てはまります。 max(a、b)== max(b、a)。
Medianは機能しない例です。メディアンの中央値は真の中央値ではありません。
は、コンバイナのもう一つの重要な財産を忘れないでください:キー/値の入力タイプとキー/値の出力タイプが同じである必要があります。たとえば、文字列を取ることはできません:intと文字列を返します:浮動小数点。
時には、減速機が数値の代わりに何らかの種類の文字列を出力することがあります。これにより、減速機をコンバイナとして接続することができない場合があります。
commutativityの場合、あなたのレデューサーはf()という関数(数学的な言葉で)で表すことができます。
同じないが、プロパティは、Fであります(f(a、b)、c)= f(a、f(b、c))である。例えば:
Map/Reduceのコンテキストでは、あなたのレデューサーはこれらの2つの特性を尊重しなければなりません。たとえば、あなたのレデューサーがsum()またはmax()を実行している場合、両方のプロパティを尊重しますが、mean()またはmedian()のようなものはないので、コンバイナーとして使用することはできません。
私は個人的には、ネットワークトラフィックを削減するために最適化などのmapフェーズの後にメモリ内で実行ミニレデューサーとしてコンバイナを見て、あなたが地図を見たら可換性/アソシエは、実際に理にかなって/この方法を削減:
誰でもダウン投票の理由を推測できますか?私は本当に私の答えが何らかの理由で良くないかどうかを知りたいのですが、これがコンバイナを常に人々に説明する方法です。ありがとう! –
あなたの答えは大きな助けです、ありがとう –
素晴らしい答え。ありがとう! –