我在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作業? –