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

启用Unity Catalog后DBFS文件读写路径冲突问题求助

问题解决方法

核心原因

切换到支持Unity Catalog的shared access mode后,你混淆了DBFS两种路径格式的适用场景:

  • /dbfs/...:是DBFS在集群节点本地文件系统的映射路径,仅适用于Python标准库(如os、open)或Linux命令行工具。
  • dbfs:/...:是Databricks内部的URI格式,仅适用于Spark API(如spark.read)或dbutils.fs工具。

你的代码全部使用Python标准库函数,因此必须统一用/dbfs/开头的挂载路径,不能用dbfs:/。

修正后的代码

class gpg_encryption(gnupg.GPG):

  asc_key_path = '/dbfs/keys/'
 
  def __init__(self):
    self.gpg = gnupg.GPG()
    self.gpg.encoding = 'utf-8'
    self.create_key_path_dir()
   
  def create_key_path_dir(self):
    """
    Creates a folder to store keyfiles.
    """
    if not os.path.exists(self.asc_key_path):
      # 加exist_ok=True避免目录已存在时的报错
      os.makedirs(self.asc_key_path, exist_ok=True)
     
  def create_asc_keyfile(self, keyfile_name, key):
    """
    Write key as armored ASCII
    """
    full_path = f"{self.asc_key_path}{keyfile_name}.asc"
    with open(full_path, 'w') as f:
      f.write(key)

关键排查点

如果使用/dbfs/路径仍报错,检查:

  • 集群服务主体是否拥有DBFS/keys/目录的读写权限,可通过dbutils.fs.ls("/keys/")测试访问性。
  • 确认没有在Python标准库函数中混用dbfs:/路径,这类函数无法识别Databricks专属URI格式。

官方文档核心要点

  • DBFS两种路径格式的分工明确:本地挂载路径供系统级工具使用,DBFS URI供Databricks原生API使用。
  • 支持Unity Catalog的集群中,DBFS权限仍遵循工作区权限设置,但隔离模式会影响服务主体的默认权限范围。
  • Python标准库操作DBFS必须通过本地挂载路径,不能直接使用DBFS URI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:02:29