2017-12-09 3 views
0

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"); 
     } 

答えて

0

あなたがアップロードできます例外? java.lang.Objectの たjava.lang.Throwable のjava.lang.Exception org.apache.hadoop.mapred にjava.io.IOException : それは、読み取り/書き込みconcurenncy

+0

これは例外であるように思えます。 FileAlreadyExistsException 質問は、HadoopでMultiple OutputsオブジェクトをEMRで使用する方法です(EMRを使用しないとうまくいきません) – JohnSnowTheDeveloper

関連する問題