【发布时间】:2016-07-21 14:44:47
【问题描述】:
我有案例课
case class MyCaseClass(City : String, Extras : Map[String, String])
和返回 scala.collection.immutable.Map 的用户定义函数
def extrasUdf = spark.udf.register(
"extras_udf",
(age : Int, name : String) => Map("age" -> age.toString, "name" -> name)
)
但这会因异常而中断:
import spark.implicits._
spark.read.options(...).load(...)
.select('City, 'Age, 'Name)
.withColumn("Extras", extrasUdf('Age, 'Name))
.drop('Age)
.drop('Name)
.as[MyCaseClass]
我应该使用 spark sql 的 MapType(DataTypes.StringType, DataTypes.IntegerType) 但我找不到任何工作示例...
如果我使用 scala.collection.Map 但我需要不可变的 Map
【问题讨论】:
标签: scala apache-spark-sql user-defined-functions spark-dataframe udf