1

こんにちは、レデューサーでいくつかの計算を実行していて、データを 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

あなたの助けに感謝。ありがとう!!!

4

2 に答える 2