如何在创建类似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群集中的某个位置吗?
答案 0 :(得分:0)
要共享笔记本,请在集群的配置中将spark.databricks.session.share设置为true。通常,UDF在spark和临时应用程序中是特定于应用程序的,因此,如果必须在其他应用程序中使用它,则他们必须再次注册它才能使用它。但是正如我所说,如果将spark.databricks.session.share设置为true,则可以在多个笔记本之间共享它。
如果用于HIVE,则可以永久注册UDF,并且可以跨多个用户进行访问
这里有一个类似的线程。看看是否有帮助。
Databricks - Creating permanent User Defined Functions (UDFs)