Databricks-Python中的创建函数(UDF)

时间:2019-03-01 22:14:04

标签: python apache-spark databricks

如何在创建类似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文件并将其放置在我的databricks群集中的某个位置吗?

1 个答案:

答案 0 :(得分:0)

要共享笔记本,请在集群的配置中将spark.databricks.session.share设置为true。通常,UDF在spark和临时应用程序中是特定于应用程序的,因此,如果必须在其他应用程序中使用它,则他们必须再次注册它才能使用它。但是正如我所说,如果将spark.databricks.session.share设置为true,则可以在多个笔记本之间共享它。

如果用于HIVE,则可以永久注册UDF,并且可以跨多个用户进行访问

这里有一个类似的线程。看看是否有帮助。

Databricks - Creating permanent User Defined Functions (UDFs)