Использование Spark SQL 2.3 и Java-файла.Не используя БД.Создал java udf в отдельном классе и пытается вызвать этот udf
из другого класса через callUdf
("udfName
", col()
), а также зарегистрировал этот udf
в том же классе, что ине бегу, если я не зарегистрируюсь.У меня есть 4 других Java-класса в запросе spark sql df
, который должен вызвать этот udf
, и я просто хочу зарегистрировать этот udf
один раз.Любые идеи, пожалуйста.
public class testUDF implements UDF1<String, String>, Serializable{
@Override
public String call(String value) {
enter code here}}
В другом классе, где у меня есть запрос df api.Я использую следующее
TestUdf testUdf = new TestUdf();
spark.sqlContext().udf().register("testUdf", testUdf, DataTypes.StringType);
В запросе
callUDF("testUdf", col("someCol"))
Необходимо зарегистрировать udf в каждом отдельном классе java df везде, где мне нужно использовать callUDf.Любые предложения, чтобы просто зарегистрироваться один раз и использовать везде в приложении, плз.
Ниже приведена ошибка, если мы не зарегистрируем udf
в каждом классе спасибо.
org.apache.spark.sql.AnalysisException: Undefined function: 'testUdf'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.;