【发布时间】:2021-10-29 16:04:25
【问题描述】:
我想从数据框上的地图列创建一个新列, 我在 spark 中没有发现任何关于通过 key 访问值的信息
所以我为此编写了自己的 udf
def getMap(m:Map[Int,Int],key:Int):Option[Int]={
m.get(key)
}
val getMapUdf= udf(getMap _)
此解决方案简单但未广泛使用 我希望一个 func 可以获得泛型类型的 getMap 函数 像这样(失败)
import scala.reflect.runtime.universe.TypeTag
def getMapG[K:TypeTag,V:TypeTag](m:Map[K,V],key:K]:Option[K]
val getMapGUdf= udf(getMapG _)
我的环境
spark-v 2.4.5
scala-v 2.11.12
我的预期是这样的
df.withColumn("value_of_key1",getMapG(col("map_col"),col("key1")))
非常感谢
【问题讨论】:
标签: scala apache-spark apache-spark-sql user-defined-functions