我在Spark,我有一个Avro文件的RDD。我现在想要做对RDD一些转换,并将其保存回为Avro的文件:Spark:写Avro文件
val job = new Job(new Configuration())
AvroJob.setOutputKeySchema(job, getOutputSchema(inputSchema))
rdd.map(elem => (new SparkAvroKey(doTransformation(elem._1)), elem._2))
.saveAsNewAPIHadoopFile(outputPath,
classOf[AvroKey[GenericRecord]],
classOf[org.apache.hadoop.io.NullWritable],
classOf[AvroKeyOutputFormat[GenericRecord]],
job.getConfiguration)
运行此星火抱怨架构$ recordSchema是不可序列。
如果我取消注释.map调用(并且只有rdd.saveAsNewAPIHadoopFile),则调用成功。
我在这里做错了什么?
有什么想法?
您能否提供异常堆栈跟踪? Spark,Hadoop和Avro版本号也可能有用。 – Wildfire
请原谅我的天真。请问在这里做什么工作?看起来这是一个地图减少工作?如果我们使用spark来写出,为什么我们需要map reduce作业? –