Hadoop と MapReduce は初めてで、キーに基づいて複数のファイルに出力を書き込もうとしています。誰かがそれを使用する方法について明確なアイデアまたはJavaコードスニペットの例を提供してください。私のマッパーは正確に機能しており、シャッフルの後、キーと対応する値が期待どおりに取得されます。ありがとう!
私がやろうとしているのは、入力ファイルから新しいファイルにいくつかのレコードのみを出力することです。したがって、新しい出力ファイルには、残りの無関係なレコードを無視して、必要なレコードのみが含まれます。MultipleTextOutputFormat を使用しなくても、これは正常に機能します。マッパーに実装したロジックは次のとおりです。
public static class MapClass extends
Mapper {
StringBuilder emitValue = null;
StringBuilder emitKey = null;
Text kword = new Text();
Text vword = new Text();
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String[] parts;
String line = value.toString();
parts = line.split(" ");
kword.set(parts[4].toString());
vword.set(line.toString());
context.write(kword, vword);
}
}
reduce への入力は次のようになります:
[key1]--> [value1, value2, ...]
[key2]--> [value1, value2, ...]
[key3]--> [value1, value2, .. .] など、
私の関心は [key2]--> [value1, value2, ...] であり、他のキーと対応する値は無視されます。減速機で私を助けてください。