3つの出力ファイルを作成するプログラムを作成するHadoop 2.6.5を使用しています。EMRでMultipleOutputsを使用するHadoop JAVA
ローカルを実行すると、プログラムはうまく動作し、3つの出力ファイルを作成します。 EMRで実行すると、この行がクラッシュする - ファイルが既に存在する:O
EMRでHadoopを使用する方法ではないことを理解しています。私はこの記事を見てきました
: https://forums.aws.amazon.com/thread.jspa?threadID=131036
しかし、私はこの方法ではありません。mos.getCollector を私はEMRと、Javaのモスでする方法上の任意のdocumenationを見つけられませんでした。
これは私の減速のコードです:
@Override
protected void setup(Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
mos = new MultipleOutputs<>(context);
}
@Override
protected void cleanup(Reducer<Text, IntWritable, Text, IntWritable>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
mos.close();
}
...メソッドを減らすの終了 - 結果ファイルに一部(もの、三々五々)を書き込む
if (keyArr.length == 1) {
mos.write(key, result, "ones.txt");
}
else if (keyArr.length == 2) {
mos.write(key, result, "twos.txt");
}
else {
mos.write(key, result, "threes.txt");
}
これは例外であるように思えます。 FileAlreadyExistsException 質問は、HadoopでMultiple OutputsオブジェクトをEMRで使用する方法です(EMRを使用しないとうまくいきません) – JohnSnowTheDeveloper