星火:Avro RDD 到 csv

Spark : Avro RDD to csv


我能够将 arvo 文件读入 avroRDD 并尝试转换为 csvRDD ,其中包含以逗号分隔的所有值。使用以下代码,我可以将特定字段读入 csvRDD.

val csvRDD = avroRDD .map({case (u, _) => u.datum.get("empname")})

如何将所有值读入 csvRDD 而不是指定字段名称。我的结果csvRDD应该包含如下记录

(100,John,25,IN)
(101,Ricky,38,AUS)
(102,Chris,68,US)

将 Spark 1.2+ 与 Databricks 的 Spark-Avro integration library 结合使用,可以将 avro rdd 转换为 csv rdd,如下所示:

val sqlContext = new SQLContext(sc)
val episodes = sqlContext.avroFile("episodes.avro")
val csv = episodes.map(_.mkString(","))

运行 csv.collect().foreach(println) 使用 this sample avro file 打印

The Eleventh Hour,3 April 2010,11
The Doctor's Wife,14 May 2011,11
Horror of Fang Rock,3 September 1977,4
An Unearthly Child,23 November 1963,1
The Mysterious Planet,6 September 1986,6
Rose,26 March 2005,9
...