Как получить доступ к моей Spark UDF через Билайн

Это вариант этой публикации. Что я хочу сделать, это зарегистрировать Spark UDF при запуске HiveThriftServer2 и разрешить всем пользователям использовать эти UDF.

Я не могу использовать решение в этой публикации, потому что пользовательский UDF-файл, который я имею, не все UDF-файлы Hive. Они Spark UDF, поэтому я не могу зарегистрировать их как create FUNCTION as используя команду улья, так как некоторые из UDF не расширяют org.apache.hadoop.hive.ql.exec.UDF

Поэтому вместо этого я загружаю HiveThriftServer2 v2.1.0 и добавляю строку после этой строки, чтобы Util.registerAll(SparkSQLEnv.sqlContext.sparkSession), Util класс в пользовательском UDF-банке, который регистрирует все пользовательские функции Spark с помощью sparkSession sparkSession.sqlContext.udf.register("UDF_function_name", evaluate),

Тогда я начинаю свой благотворительный сервер sudo -u spark /usr/lib/spark/sbin/start-thriftserver.sh, Я добавил несколько отладочных операторов для выбора после того, как зарегистрировал UDF в классе HiveThriftServer2. Я могу видеть результат. Когда я делаю spark.catalog.listFunctions() Я могу видеть UDFs, но указан как временная функция.

Так что теперь, когда я подключаюсь к Thrift Server через beeline -u jdbc:hive2://localhost:10000/default и сделать выбор, он говорит, что функция недействительна. И когда я выпускаю show functions функций udf больше нет.

Я пытался положить spark.sql.hive.thriftServer.singleSession=true в sudo -u spark /usr/lib/spark/sbin/start-thriftserver.sh но это не помогает

Как зарегистрировать пользовательские функции Spark, чтобы их можно было использовать во всех сеансах через ThriftServer?

Спасибо!

0 ответов

Другие вопросы по тегам