reduceタスクの実行時にhadoopジョブで頻繁に発生しました。 この問題の理由のいくつかは、レデューサーが長い間コンテキストを書き込まなかったため、コードにcontext.progress()を追加する必要があることがあります。しかし私のreduce関数では、文脈が頻繁に書かれています。
public void reduce(Text key, Iterable<Text> values, Context context) throws
IOException,InterruptedException{
Text s=new Text();
Text exist=new Text("e");
ArrayList<String> T=new ArrayList<String>();
for(Text val:values){
String value=val.toString();
T.add(value);
s.set(key.toString()+"-"+value);
context.write(s,exist);
}
Text need=new Text("n");
for(int i=0;i<T.size();++i){
String a=T.get(i);
for(int j=i+1;j<T.size();++j){
String b=T.get(j);
int f=a.compareTo(b);
if(f<0){
s.set(a+"-"+b);
context.write(s,need);
}
if(f>0){
s.set(b+"-"+a);
context.write(s,need);
}
}
}
}
あなたはコンテキストがループ内で頻繁に書かれていることがわかります。はここに私の軽減機能です。 このエラーの原因は何ですか?そして私はそれをどのように扱うことができますか?
ジョブが正しく終了するか、これらのエラーが原因で中断しますか? – AdamSkywalker
これはまだ100%まで実行され、失敗して終了します。@ AdamSkywalker –
私はまずアプリケーションUIを開き、減損していないマシンからアプリケーションログをチェックします。彼らはいくつかの手がかりを含めることができます – AdamSkywalker