1
Когда я пытаюсь использовать пользовательскую функцию, которая возвращает объект вектор, Спарк бросает следующее исключение:нельзя использовать Vector от искрового ML Lib для DataFrame
Cause: java.lang.UnsupportedOperationException: Not supported DataType: [email protected]
Как я могу использовать вектор в моей UDF, ? Версия Spark - 1.5.1.
UPD
val dataFrame: DataFrame = sqlContext.createDataFrame(Seq(
(0, 1, 2),
(0, 3, 4),
(0, 5, 6)
)).toDF("key", "a", "b")
val someUdf = udf {
(a: Double, b: Double) => Vectors.dense(a, b)
}
dataFrame.groupBy(col("key"))
.agg(someUdf(avg("a"), avg("b")))
Благодарим вас за ответ. Этот же код работает, если я изменяю Vectors.dense() на i.e Array(). – Zyoma
Я знаю. Похоже, что проблема связана с комбинацией вычисляемых столбцов 'agg' и' VectorUDT'. – zero323
Ваш пример работает для меня. Еще раз спасибо. Но я думаю, что это поведение странно. 'SomeUdf' хорошо работает в методе' agg', если я использую некоторый примитивный тип или, например, 'Array'. Может кто-нибудь объяснить, почему это происходит? – Zyoma