Spark 2.3 java udf нужно ли регистрировать в каждом классе java в приложении? - PullRequest
0 голосов
/ 15 октября 2018

Использование 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'.;
...