python - Databricks - 在 Python 中创建函数 (UDF)

标签 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只适用于运行这段代码的notebook。

我想使用 SQL 语法做同样的事情来注册函数,因为我会有一些用户通过 SQL 客户端使用数据 block ,他们也需要这些函数。

在 Databricks 文档中说我可以定义资源:

: (JAR|FILE|ARCHIVE) file_uri

我需要创建一个 .py 文件并将其放在我的数据 block 集群中的某个位置吗?

最佳答案

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

如果它用于 HIVE,那么您可以永久注册 UDF,并且可以跨多个用户访问

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

Databricks - Creating permanent User Defined Functions (UDFs)

关于python - Databricks - 在 Python 中创建函数 (UDF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54953021/

相关文章:

python - 基于任意对象成员变量查找的python中对象的高效数据结构

python - Pygame 碰撞错误

java - Spark 类型不匹配 : cannot convert from JavaRDD<Object> to JavaRDD<String>

python - 无法将文件从 Databricks 保存到桌面

databricks - 使用 CLI 和/或 API 在 databricks 笔记本上执行 git pull

python - 类型错误 : must be str, 不是元组

python - 在 matplotlib 子图中只绘制图例

scala - 在本地计算机上运行Spark Streaming时出现“连接被拒绝”错误

java - 如何用reduceByKey替换groupByKey以在Spark java中作为Iterable值返回?

apache-spark - Azure 数据 block : How to add Spark configuration in Databricks cluster