通过scala spark中的键从地图列获取元素

get element from map column via key in scala spark

我想从数据框上的地图列创建一个新列, 我在 spark

中找不到任何关于按键访问值的信息

所以我为此编写了自己的 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")))

非常感谢

有一个内置函数,element_at