こんにちは私はhadoopフレームワークを使ってjavaでfacebookのようなプログラムを実装しています(これは初めてです)。reduce関数のKEYとしての文字列のペア - HADOOP
:主なアイデアは、私は、入力はこのように.txtファイルがあるということですクリスティーナビル、ジェームズ、ニック、ジェシカ
ジェームズ・クリスティーナ、メアリー、トビー、ニック
...
1番目はユーザーで、カンマ区切りは友人です。マップ機能で
私は、ファイルの各行をスキャンし
クリスティーナビル
クリスティーナ・ジェームズとなります
のような彼の友人のそれぞれをユーザに発します(Christina,[Bill,James,..])
...
私の割り当ての説明ではReduce関数が の2人のユーザーのタプルをキーとして受け取った場合、その両方の友人の後に、 のものが数えられ、数字が の5以上の数値に等しいかそれ以上の場合、珍しい友人の を提案することができます。どのようにして正確に1組のユーザーをreduce関数に渡すのですか?私はreduce関数の入力がmap関数の出力と同じでなければならないと考えました。私はこれをコーディングし始めましたが、これは正しいアプローチではないと思います。何か案は?あなたがcustom record reader
を実装することができるかどう
public class ReduceFunction<KEY> extends Reducer<KEY,Text,KEY,Text> {
private Text suggestedFriend = new Text();
public void reduce(KEY key1,KEY key2, Iterable<Text> value1,Iterable<Text> value2,Context context){
}}
あなたの割り当てがうまく理解できれば、マップとシャッフルとソート後に取得する2行のグループをスキャンする必要があります**(キーカップル、[共通リスト]、[珍しいリスト])** –
実際には...また、一度に1行ずつファイルをスキャンする必要があることを指定しています。マップ機能では、各自の友達と一緒にユーザーを送信する必要があります。 –