多くのマッパーとリデューサーをチェーンするツールがあり、ある時点で、以前の map-reduce ステップの結果をマージする必要があります。たとえば、入力として、データを含む 2 つのファイルがあります。
/input/a.txt
apple,10
orange,20
*/input/b.txt*
apple;5
orange;40
結果は c.txt である必要があります。ここで、c.value = a.value * b.value
/output/c.txt
apple,50 // 10 * 5
orange,800 // 40 * 20
どのようにそれを行うことができますか?単純な Key => MyMapWritable (type=1,2, value) を導入し、リデューサーでデータをマージ (実際には乗算) することでこれを解決しました。それは動作しますが、:
- もっと簡単にできそうな気がする(いい匂いがしない)
- Mapper 内で、どのファイルがレコード プロバイダー (a.txt または b.txt) として使用されたかを正確に知ることはできますか? 今のところ、コンマとセミコロンの異なるセパレータを使用しました:(