星火: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
...
我能够将 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
...