Hi,

I have been unsuccessfully trying to set the map output value class
different to the one reduce outputs (in 0.16.0).  AFAIK the following should
do the trick:

conf.setMapOutputValueClass(FooWritable.class)
conf.setOutputValueClass(BarWritable.class)

However I kept getting exceptions saying BarWritable is not FooWritable.
Both classes implements WritableComparable.

java.io.IOException: wrong value class: test.BarWritable is not class
test.FooWritable
    at org.apache.hadoop.io.SequenceFile$Writer.append(SequenceFile.java
:952)
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer$2.collect(
MapTask.java:489)
    at edu.umd.cs.hadoopImage.HadoopImg$InpaintReduceClass.reduce(
HadoopImg.java:122)
    at edu.umd.cs.hadoopImage.HadoopImg$InpaintReduceClass.reduce(
HadoopImg.java:1)
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.combineAndSpill(
MapTask.java:522)
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpillToDisk(
MapTask.java:493)
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java
:713)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:209)
    at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java
:2071)


Suggestions?  Thanks.


 - Chang


-- 
---------------
Überstehen ist alles.


Chang Hu
Ph.D. student
Computer Science Department
University of Maryland

Reply via email to