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

Databricks:如何在初始化脚本中访问工作区文件

问题背景

我们尝试将部分jar文件存放在Databricks工作区的文件夹中,并通过初始化脚本复制到DBFS或驱动节点文件系统。

工作区文件结构示例:
/Workspace/<Folder_Name1>/jars/sample_name_01.jar

使用的初始化脚本:

#!/bin/bash
cp /Workspace/<Folder_Name1>/jars/sample_name_01.jar /dbfs/jars/
cp /Workspace/<Folder_Name1>/jars/sample_name_01.jar /tmp/jars/

脚本执行失败,报错:
cp: cannot stat '/Workspace/<Folder_Name1>/jars/sample_name_01.jar': No such file or directory

已尝试操作:

  • 包含/不包含/Workspace路径
  • Web终端可正常访问该文件,但脚本无法识别路径
  • 尝试列出文件、等待挂载(最长2分钟),均未解决问题

问题解答

1. 初始化脚本能否访问工作区文件?

默认情况下,集群初始化脚本(集群启动阶段运行的bash脚本)无法直接访问Databricks工作区文件。原因是工作区文件存储在Databricks控制平面,而集群计算节点(含驱动节点)运行在数据平面,初始化脚本执行时,工作区并未挂载到节点的本地文件系统。Web终端能访问是因为终端会话启动后,工作区才会被挂载到节点,这个时机晚于初始化脚本的执行阶段。

2. 对jar、whl/egg文件是否存在访问限制?

针对文件类型本身没有额外访问限制,核心限制还是工作区文件的挂载时机——初始化脚本阶段工作区未挂载,所以不管是jar、whl还是其他类型文件,都无法通过本地路径直接访问。集群启动完成后的会话(如Web终端、Notebook命令)中,只要具备对应工作区权限,这些文件都可正常访问。

3. 访问工作区文件的正确语法是什么?

如果要在初始化脚本中访问工作区文件,不能使用本地文件系统路径,需通过Databricks CLI或REST API拉取文件,或提前将文件放到DBFS/云存储(S3、ADLS等)中。

若在集群启动后的会话(如Notebook、Web终端)中访问,工作区会被挂载到/dbfs/FileStore/workspace路径下,正确本地路径应为:
/dbfs/FileStore/workspace/<Folder_Name1>/jars/sample_name_01.jar

也可通过Databricks的dbutils.fs命令访问,比如在Notebook中执行:

dbutils.fs.cp("dbfs:/Workspace/<Folder_Name1>/jars/sample_name_01.jar", "dbfs:/jars/")

4. 将少量jar文件存放在工作区而非DBFS是否合理?

少量jar文件存放在工作区是合理的,适合以下场景:

  • 文件属于项目代码一部分,需和Notebook、工作区文件夹一起做版本控制(如通过Databricks Repos同步)
  • 文件仅用于特定Notebook/作业,无需全局共享
  • 方便在工作区中直接管理、查看文件

但如果需要在初始化脚本中使用这些文件,建议提前同步到DBFS或云存储,因为初始化脚本无法直接访问工作区文件。另外,工作区存储容量有限(不同区域/计划有差异),大量文件仍建议存放在DBFS或云存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:02:04