-1
使用UDF意味着每个因子c1
,c2
,c3
必须独立传递参数。有没有灵活的解决方案,例如如何将这些因子的序列传递给UDF?如何将二维数组传递给用户定义的函数?
val myFunction = udf {
(userBias: Float, productBias: Float, productBiases: Map[Long, Float],
userFactors: Seq[Float], productFactors: Seq[Float], c1: String, c2: String, c3: String) =>
var result = Float.NaN
// result calculation
result
}
然后我把这个功能通过以下方式(dataset
是DataFrame
):
myFunction(userBias("bias"),
productBias("bias"),
productBias("biases"),
userFactors("features"),
productFactors("features"),
dataset(factors(0)), dataset(factors(1)), dataset(factors(2))
如果我做这样的事情,那么编译器说 “不适用”:
val myFactors = dataset.select(factors.head, factors.tail: _*)
myFunction(userBias("bias"),
productBias("bias"),
productBias("biases"),
userFactors("features"),
productFactors("features"),
myFactors)
为什么这个问题是downvoted? – Klue