What output schema did you specify for the job?

Doug

On 04/13/2011 04:29 AM, Felix.徐 wrote:
> Hi,all. I try to use GenericRecord as value in mapreduce:
> 
> public void map(GenericRecord record,
> AvroCollector<Pair<Utf8,GenericRecord>> collector,  Reporter reporter)
> ....
> collector.collect(new Pair<Utf8,GenericRecord>(new Utf8(key),value));
> 
> here, object value is a GenericRecord. Then I run this job, exception
> comes out:
> 
> 11/04/13 02:23:05 WARN mapred.LocalJobRunner: job_local_0001
> java.lang.ClassCastException: org.apache.avro.generic.GenericData$Record
> incompatible with java.lang.CharSequence
>     at
> org.apache.avro.generic.GenericDatumWriter.writeString(GenericDatumWriter.java:189)
>     at
> org.apache.avro.reflect.ReflectDatumWriter.writeString(ReflectDatumWriter.java:85)
>     at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:77)
>     at
> org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:102)
>     at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:58)
>     at
> org.apache.avro.mapred.AvroSerialization$AvroWrapperSerializer.serialize(AvroSerialization.java:131)
>     at
> org.apache.avro.mapred.AvroSerialization$AvroWrapperSerializer.serialize(AvroSerialization.java:1)
>     at
> org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:900)
>     at
> org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:466)
>     at
> org.apache.avro.mapred.HadoopMapper$MapCollector.collect(HadoopMapper.java:69)
>     at com.ibm.crl.manager.MREngine$AggregationMapper.map(MREngine.java:73)
>     at com.ibm.crl.manager.MREngine$AggregationMapper.map(MREngine.java:1)
>     at org.apache.avro.mapred.HadoopMapper.map(HadoopMapper.java:80)
>     at org.apache.avro.mapred.HadoopMapper.map(HadoopMapper.java:1)
>     at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>     at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
>     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
>     at
> org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
> 
> It seems that the GenericDatumWriter writes my record by using
> writeString() instead of writeRecord()..

Reply via email to