python - Databricks - 在 Python 中创建函数 (UDF)
问题描述
如何创建一个像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 文件并将其放在我的数据块集群中的某个位置吗?
解决方案
要共享笔记本,请在集群配置中将 spark.databricks.session.share 设置为 true。通常 UDF 在 spark 中是特定于应用程序的并且是临时的,因此如果必须在其他应用程序中使用它,他们必须再次注册它才能使用它。但正如我所说,如果您将 spark.databricks.session.share 设置为 true ,您可以在多个笔记本上共享它。
如果是针对 HIVE,那么您可以永久注册 UDF,并且可以跨多个用户访问
这是相同的类似线程。看看它是否有帮助。
推荐阅读
- python - 如何使用 pyjnius 通过 Android BluetoothSocket 发送数据?
- android - 让用户在 android app sqlite 数据库中成功登录和注销
- python - open: integer is required 需要什么参数错误
- c++ - 如何将 cairo_surface_t 作为 g_signal_connect 中的参数传递?
- c# - 100K 字典在其中搜索 50K 项需要太长时间
- python-3.x - 一次转置列的范围-熊猫
- d3.js - 以时间为 Z 轴的 Plotly JS 3D 绘图
- python - 类型错误:“int”对象不可下标
- bash - 将 az cli 传递给 bash 脚本的 azure 自定义扩展脚本
- reactjs - 导航到特定路线然后导航回来后更改了表格布局