通过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
我想从数据框上的地图列创建一个新列, 我在 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