Я создал scala UDF и зарегистрировал то же самое, используя spark.udf.register("UDFName",UDFName)
. Когда я запускаю команду
%scala
spark.catalog.listFunctions.filter('name like "%UDFName%").show(false)
, я получаю результат как:
+--------------+--------+-----------+----------------------------------+-----------+
|name |database|description|className |isTemporary|
+--------------+--------+-----------+----------------------------------+-----------+
|UDFNAME |default |null |com.pro.security.udf.UDFNAME |false |
+--------------+--------+-----------+----------------------------------+-----------+
Так что вышеизложенное говорит, что UDF является постоянным. Но теперь, когда я выполняю простую команду в Блоки данных:
spark.sql("select UDFName('XYZKey',to_date('2020-03-03 05:17:52'))").show()
Я получаю следующую ошибку:
org. apache .spark. sql .AnalysisException: Не удается загрузить класс 'com.pro.security .udf.UDFName 'при регистрации функции default.UDFNAME убедитесь, что она находится на пути к классам; Строка 1, поз. 7
Есть ли какие-либо указания, почему это происходит, даже если регистрация работала нормально ??