Пример, который был опубликован, был из авторитетного источника, но я не могу запустить без ошибки сериализации в Spark 2.4, попытка объектов и т. Д. Тоже не помогли.
Я решил проблему следующим образомиспользование подхода udf ((.., который выглядит как единственное возможное утверждение, и действительно, я мог это сделать и вуаля не сериализовался. Несколько иной пример, хотя и с использованием примитивов.
val sumContributionsPlus = udf((n1: Int, n2: Int, n3: Int, n4: Int) => Seq(n1,n2,n3,n4).foldLeft(0)( (acc, a) => if (a > 0) acc + a else acc))
В заключение отметим, чтообсуждение UDF, родной Spark, UDF-столбцов сбивает с толку, когда вещи перестают работать.