Spark ThriftServer - current_user () UDF возвращает пустое значение - PullRequest
0 голосов
/ 18 октября 2019

Мы работаем с искрой (2.3.4) на ЭМИ. Мы могли бы запустить сервер spark thrift и подключиться с помощью драйвера Simba spark jdbc. Мы зарегистрировали встроенные пользовательские функции hive в оболочке куста и могли использовать их в sql-запросах, запускаемых из драйвера Simba к Thrift-серверу Spark.

Однако UDF куста current_user () всегда возвращается пустым при запуске на Thrift-сервере Spark. Тот же UDF работает и возвращает идентификатор пользователя с оболочкой spark-sql.

Может кто-нибудь помочь понять, почему сервер Spark-thrift не дает ожидаемых результатов. Есть ли какие-то настройки, которые нам нужно изучить.

Я зарегистрировал эти два UDF-файла улья и запустил искровой SQL-запрос.

CREATE FUNCTION myconcat AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFConcat' 
CREATE FUNCTION myuser AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFCurrentUser' 

select myuser(), myconcat('123','456')

Как мы увидим ниже, текущий пользовательский UDF показываетnull, пока concat UDF работает как положено.

== Parsed Logical Plan ==
'Project [unresolvedalias('myuser(), None), unresolvedalias('myconcat(123, 456), None)]
+- OneRowRelation

== Analyzed Logical Plan ==
default.myuser(): string, default.myconcat(123, 456): string
Project [HiveGenericUDF#org.apache.hadoop.hive.ql.udf.generic.GenericUDFCurrentUser() AS default.myuser()#74, HiveGenericUDF#org.apache.hadoop.hive.ql.udf.generic.GenericUDFConcat(123,456) AS default.myconcat(123, 456)#75]
+- OneRowRelation

== Optimized Logical Plan ==
Project [null AS default.myuser()#74, 123456 AS default.myconcat(123, 456)#75]
+- OneRowRelation

== Physical Plan ==
*(1) Project [null AS default.myuser()#74, 123456 AS default.myconcat(123, 456)#75]
+- Scan OneRowRelation[]
...