1

MapReduce でプログラムを使用しています。2 つのファイルがあり、file2 に存在する file1 からいくつかの情報を削除したいと考えています。すべての行には、キーとして ID があり、値として (コンマで区切られた) いくつかの数字があります。

file1:
1    1,2,10
2    2,7,8,5
3    3,9,12

file2:
1    1
2    2,5
3    3,9

次のような出力が必要です。

output:    
1    2,10
2    7,8
3    12 

file2 に同じキーを持つ file1 の値を削除したいと考えています。これを行う 1 つの方法は、2 つのファイルを入力ファイルとして使用し、map ステップで次を生成することです(ID, line)。次に、reduce ステップで値をフィルタリングします。しかし、私のファイルは非常に大きいため、この方法では実行できません。

または、file1 が入力ファイルで、マップ内で file2 を開いてその行をシークし、値を比較すると効率的でしょうか? しかし、100 万個のキーがあり、キーごとに file1 を開く必要があるため、I/O が過剰になると思います。

私に何ができる?

4

1 に答える 1