I actually just ran into the same problem. Took an evening of poking
around to see what was going on. What appears to be going on is that
the Iterable<Text> values seemed to be reusing the Text object being
exposed in the for loop and just changing the content of the Text.
Try doing this instead:
for(Text val:values){
activeList.add(new Text(val.toString));
context.write(key, activeList.get(0));
}
I was using a custom object that implemented Writable and instead of
getting a list of objects, I got n copies of the same object in my
list. By copying the object out of the values Iterable into a new
object that I then inserted into my list everything worked properly.
Hope this helps,
Bryan
On Dec 23, 2009, at 3:01 AM, oo famcr wrote:
Hello everyone
I want to save the value to a LinkedList, but THE
***activeList.get(0)***
have been changed every time.
I think it should be the first element, but it's not
Thanks
Song
==========Part of WordCount===========
public static class IntSumReducer
extends Reducer<Text,Text,Text,Text> {
private List<Text> activeList = new LinkedList<Text>();
public void reduce(Text key, Iterable<Text> values,
Context context
) throws IOException, InterruptedException {
for (Text val : values) {
activeList.add(val);
context.write(key, new Text( activeList.get(0).toString() ));
}
}