You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Databricks:能否将Notebook像库一样部署到集群实现全局复用?

在Azure Databricks中实现全局共享Notebook定义与函数的方案

这个需求完全可行,以下是几种实用的实现方式:

1. 集群初始化脚本(Cluster Init Scripts)

  • 先将你的definitions_file Notebook导出为Python脚本(在Databricks Notebook界面右上角选择「导出」→「Python」)
  • 将导出的.py文件上传到DBFS(比如dbfs:/databricks/scripts/definitions.py)或者你的云存储(如ADLS)
  • 进入集群配置页面,在「高级选项」→「初始化脚本」中添加该脚本的路径,保存后重启集群
  • 集群启动后会自动执行这个脚本,里面的函数、变量和命令会成为集群全局资源,所有连接到该集群的Notebook都能直接调用,无需再执行%run命令
  • 注意:修改脚本后必须重启集群才能生效

2. Databricks工作区库(Workspace Library)

  • 把definitions_file中的代码整理成标准Python模块(比如创建一个my_definitions.py文件,把函数、类等封装进去)
  • 将模块打包成wheel格式(本地执行python setup.py bdist_wheel,或者用Databricks的库打包工具)
  • 在Databricks工作区中创建新库,上传打包好的wheel文件,然后将该库附加到目标集群
  • 之后在任意Notebook中只需通过import my_definitions或者from my_definitions import my_function就能调用对应内容,替代%run
  • 优势:支持版本管理,更新库后只需重启集群(或刷新库)即可生效,比初始化脚本更灵活

3. 全局临时视图(针对Spark相关对象)

  • 如果definitions_file中包含Spark UDF、DataFrame等对象,可以将它们注册为全局临时视图:
    • 注册UDF:spark.udf.register("my_custom_udf", my_udf_function)
    • 注册DataFrame:my_df.createGlobalTempView("my_global_df")
  • 全局临时视图的生命周期与集群绑定,只要集群运行,所有Notebook都能通过Spark SQL调用:
    • 使用UDF:spark.sql("SELECT my_custom_udf(col) FROM table")
    • 使用全局视图:spark.sql("SELECT * FROM global_temp.my_global_df")
  • 适合共享Spark生态内的对象,不适合普通Python函数或变量

注意事项

  • 以上方案均基于集群级别,只有连接到目标集群的Notebook才能访问共享内容
  • 避免在全局共享代码中定义带状态的变量,防止不同Notebook执行时产生干扰
  • 若需跨集群共享,建议使用工作区库的方式,可在多个集群间复用

内容的提问来源于stack exchange,提问作者Ricardo Francisco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 22:50:43