Не удалось выполнить функцию куста current_user из spark sql - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь выполнить куст SQL от спарк. Следующее прекрасно работает с использованием spark-sql или из spark-submit для python со встроенными выражениями hive sql.

spark-sql --master yarn -e "select count(*) from adhoc.dual;"

Но я не могу казнить spark-sql - master yarn -e "выберите current_user () из adhoc.dual;"

Я получаю следующую ошибку

Error in query: Undefined function: 'current_user'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 7

current_user - постоянная функция улья.

Аналогично, из pyspark я могу выполнять большинство операторов улья, в том числе те, которые связаны с пользовательским UDF, после регистрации UDF в качестве временной функции, например: СОЗДАТЬ ВРЕМЕННУЮ ФУНКЦИЮ foo AS 'com.example.foo';

Но выполнение макроса создания куста приводит к сбою

from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.sql.types import IntegerType, StringType
import pyspark.sql.functions as F

spark = SparkSession.builder.appName("Python Spark Hive example").enableHiveSupport().getOrCreate()
spark.sql("CREATE TEMPORARY MACRO PacificTzDate(ts BIGINT) DATE(FROM_UTC_TIMESTAMP(FROM_UNIXTIME(ts, 'yyyy-MM-dd HH:mm:ss'), 'America/Los_Angeles')")

Это происходит со следующей ошибкой:

pyspark.sql.utils.ParseException: u"\nOperation not allowed: CREATE TEMPORARY MACRO(line 1, pos 0)\n\n== SQL ==\nCREATE TEMPORARY MACRO PacificTzDate(ts BIGINT) DATE(FROM_UTC_TIMESTAMP(FROM_UNIXTIME(ts, 'yyyy-MM-dd HH:mm:ss'), 'America/Los_Angeles')\n^^^\n"

19/01/02 20:09:49 ИНФОРМАЦИЯ SparkContext: вызов остановки () из отключающего крюка

...