【发布时间】:2017-09-03 20:35:27
【问题描述】:
在我的应用程序的某个时刻,我有一个 DataFrame,其中包含一个从案例类创建的 Struct 字段。现在我想将其转换/映射回案例类类型:
import spark.implicits._
case class Location(lat: Double, lon: Double)
scala> Seq((10, Location(35, 25)), (20, Location(45, 35))).toDF
res25: org.apache.spark.sql.DataFrame = [_1: int, _2: struct<lat: double, lon: double>]
scala> res25.printSchema
root
|-- _1: integer (nullable = false)
|-- _2: struct (nullable = true)
| |-- lat: double (nullable = false)
| |-- lon: double (nullable = false)
基本的:
res25.map(r => {
Location(r.getStruct(1).getDouble(0), r.getStruct(1).getDouble(1))
}).show(1)
看起来很脏 有没有更简单的方法?
【问题讨论】:
标签: scala apache-spark dataframe apache-spark-sql apache-spark-2.0