如何使用Case类从RDD创建包含组合列的数据集



嗨,我使用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|
+--------------+

最新更新