我能够将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)

最佳答案

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

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

使用this sample avro file打印运行csv.collect().foreach(println)
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
...

08-28 13:59