Блоки данных - Создать функцию (UDF) в Python - PullRequest
0 голосов
/ 02 марта 2019

Как я могу создать такую ​​функцию https://docs.databricks.com/spark/latest/spark-sql/language-manual/create-function.html#create-function, но определяя функцию в python?

Я уже сделал что-то подобное:

from pyspark.sql.types import IntegerType
def relative_month(input_date):
  if input_date is not None:
    return ((input_date.month + 2) % 6)+1
  else:
    return None
_ = spark.udf.register("relative_month", relative_month, IntegerType())

Но только этот UDFработает для ноутбука, который выполняет этот кусок кода.

Я хочу сделать то же самое, используя синтаксис SQL для регистрации функции, потому что у меня будет несколько пользователей, использующих блоки данных через клиенты SQL, и им тоже понадобятся функции.

В документации по Databricks сказано, что я могу определить ресурс:

: (JAR|FILE|ARCHIVE) file_uri

Мне нужно создать файл .py и поместить его где-нибудь в моем кластере блоков данных?

1 Ответ

0 голосов
/ 08 марта 2019

Для совместного использования записных книжек установите для параметра spark.databricks.session.share значение true в конфигурации кластера.Обычно UDF-приложения являются специфичными для искры и временными, поэтому, если нужно использовать его в другом приложении, они должны зарегистрировать его снова для использования.Но, как я уже сказал, если установить для spark.databricks.session.share значение true, вы можете поделиться им с несколькими ноутбуками.

Если это для HIVE, то вы можете зарегистрировать UDF постоянно и иметь доступ к несколькимuser

Вот аналогичная тема для того же. Смотрите, если это поможет.

Databricks - Создание постоянных пользовательских функций (UDF)

...