嗨,我使用Spark/Scala 2.4.4,并有一个RDD[Map(String, String)]与Persons…行如下所示:
rdd = Map(
(FirstName -> "Michael")
(SecondName -> "Jackson")
)
我创建了一个像这样的case类:
case class Person(FirstName: String, SecondName: String) {
val FullName = FirstName + SecondName
}
我怎么能把这个RDD转换成一个数据集[人],并有可能产生FullName列时,类实例化或我需要与列一起运行?
谢谢!
您需要将映射展开为两列,并将行转换为Person
。
val rdd = sc.parallelize(Seq(Map(
("FirstName" -> "Michael"),
("SecondName" -> "Jackson")
)))
val df = rdd.toDF("person").select("person.FirstName", "person.SecondName").as[Person]
然后您可以使用map
获取FullName,例如:
df.map(r => r.FullName).show
+--------------+
| value|
+--------------+
|MichaelJackson|
+--------------+