Die Verwendung von UDF bedeutet, dass jeder Faktor c1
, c2
, c3
unabhängig vom Parameter übergeben werden muss. Gibt es eine flexible Lösung, z.B. Wie übergibt man eine Folge dieser Faktoren an UDF?Wie übergebe ich ein zweidimensionales Array zu benutzerdefinierten Funktionen?
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
}
und dann diese Funktion nenne ich die folgende Art und Weise (dataset
ist ein DataFrame
):
myFunction(userBias("bias"),
productBias("bias"),
productBias("biases"),
userFactors("features"),
productFactors("features"),
dataset(factors(0)), dataset(factors(1)), dataset(factors(2))
Wenn ich so etwas tun, dann wird der Compiler sagt: "Nicht zutreffend":
val myFactors = dataset.select(factors.head, factors.tail: _*)
myFunction(userBias("bias"),
productBias("bias"),
productBias("biases"),
userFactors("features"),
productFactors("features"),
myFactors)
Warum wurde die Frage downvoted? – Klue