【发布时间】:2018-03-20 15:56:10
【问题描述】:
我正在尝试创建一个 spark scala udf 来转换以下形状的 MongoDB 对象:
Object:
"1": 50.3
"8": 2.4
"117": 1.0
进入 Spark ml SparseVector。 问题是,为了创建一个 SparseVector,我还需要一个输入参数——它的大小。 在我的应用程序中,我将向量大小保存在单独的 MongoDB 集合中。 所以,我定义了以下 UDF 函数:
val mapToSparseVectorUdf = udf {
(myMap: Map[String, Double], size: Int) => {
val vb: VectorBuilder[Double] = new VectorBuilder(length = -1)
vb.use(myMap.keys.map(key => key.toInt).toArray, myMap.values.toArray, size)
vb.toSparseVector
}
}
我试图这样称呼它:
df.withColumn("VecColumn", mapToSparseVectorUdf(col("MapColumn"), vecSize)).drop("MapColumn")
但是,我的 IDE 对那个 udf 调用说“不适用”。 有没有办法制作这种可以带额外参数的UDF?
【问题讨论】:
标签: mongodb scala apache-spark user-defined-functions