Проверьте, зарегистрирован ли udf в pyspark - PullRequest
0 голосов
/ 04 февраля 2020

Мне нужно проверить, зарегистрирована ли пользовательская функция pyspark перед выполнением команды sql, которая ее использует. Упомянутый udf называется jaro_winkler_sim.

У меня есть код, который сделает это, используя что-то вроде:

from pyspark.sql.utils import  AnalysisException
try:
    sql = "select jaro_winkler_sim('a', 'b')"
    spark.sql(sql)
    fn_exists = True
except AnalysisException as e:
    # handle error
    fn_exists = False

Но я чувствую, что должен быть более прямой метод. Как я могу это сделать?

1 Ответ

0 голосов
/ 04 февраля 2020

Вы можете использовать spark.catalog.listFunctions() для этого следующим образом:

def _check_jaro_registered(spark):
    for fn in spark.catalog.listFunctions():
        if fn.name == 'jaro_winkler_sim':
            return True
    return False

(Примечание spark - это sparkSession в приведенном выше)

...