こんにちは、レデューサーでいくつかの計算を実行していて、データを ArrayList にロードしようとしています。コードの後半で ArrayList に対して get 操作を実行すると、ArrayList 内のすべてのオブジェクトが同じ値になります。
public ArrayList<some_class> temp = new ArrayList<some_class>();
//This is global variable
@Override
public void reduce(Key_class key, Iterator<some_class> values,
OutputCollector<Text, Text> output, Reporter reporter)
throws IOException {
if(this.output==null){
this.output=output;
}
while(values.hasNext())
{
//if i print here
//and do the following values.next().val1
//I'm getting the right result
temp.add(values.next());
}
System.out.println(temp.get(0).val1);//Wrong result
}
以下のような出力が得られます: 12/10/2012 10:13 12/10/2012 10:13
実際の出力は次のようになります: 12/10/2012 09:10 12/10/2012 10:13
あなたの助けに感謝。ありがとう!!!