1 つを残して他のものを削除するか、それともすべてをマッパーとリデューサーに渡しますか?
3 に答える
Hadoop フレームワークは、重複する KV ペアを無視/削除しません。KV ペアの無視/変更は、ユーザー定義の map および reduce 関数で行う必要があります。
フレームワークは入力データを読み取り、入力データを KV ペアとして使用してユーザー定義のマップ関数を呼び出します。マップ関数は、いくつかの処理後に KV ペアを発行します。これらの中間 KV ペアはソート/マージされ、ユーザー定義のレデューサー関数がキーごとに何度も呼び出され、reduce 関数は再び KV ペアを発行します。
MapReduce と Hadoop をより明確にするために、 Hadoop: The Definitive Guide, 3rd Editionを入手することをお勧めします。
同じ KeyValue ペア
マップフェーズ
Key-Value ペアは互いに独立しているため、Mapper は同一の Key-Value ペアを検索/認識しません。
元:
key value
1 2
1 2
2 5
3 19
map(k,v)
{
emit(k,v)
}
エミット: 1,2 1,2 2,5 3,19
削減フェーズ
同一の Key-Value ペアは、 Key で値をソートすることによって処理されるため、 Key に関連付けられた値は無視され、各値は一意として扱われます。
元:
key value
1 {2,2}
2 {5}
3 {19}
MapReduce モデルは、@saurabh が言及したように、Map フェーズでそれらを個別に読み取り、Reduce フェーズでキーによってグループ化します。