In spark udf должен быть зарегистрирован для использования в ваших запросах.
Зарегистрировать функцию как UDF
пример:
val squared = (s: Long) => {
s * s
}
spark.udf.register("square", squared)
, поскольку вы незарегистрировано days
как выкидывающее эту ошибку.
Я предполагаю, что вы написали пользовательский udf для определения количества дней между двумя датами.
Как отладить?:
Чтобы проверить, есть ли ваш udf в функциях, зарегистрированных с помощью spark или нет, например this .
Вы можете запросить доступный стандарт и пользователя.-определенные функции с использованием интерфейса Каталога (который доступен через атрибут SparkSession.catalog).
val spark: SparkSession = ...
scala> spark.catalog.listFunctions.show(false)
будет отображать все функции, определенные в сеансе spark.
Дальнейшее чтение: UDFs - пользовательские функции
Если нет ... вы можете попробовать, который уже присутствует в функциях искры. Scala
статическая колонкаdatediff (конец столбца, начало столбца) Возвращает количество дней с начала to конец.