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

如何从Databricks的ADLS挂载点读取文件为字节串

问题根因

Databricks 中/mnt开头的挂载路径属于 Databricks 文件系统(DBFS)的虚拟路径,Python 原生open函数默认访问的是集群计算节点的本地文件系统,二者不互通。只有 DBFS 下的/tmp目录默认同步挂载到了节点本地的/tmp路径,所以直接读取/mnt下的文件会报不存在错误。

可用实现方案

方案1:复制到本地临时目录读取(最简便)

先将DBFS挂载点的文件复制到节点本地/tmp目录,再用原生open读取:

# 把DBFS文件复制到本地临时目录
dbutils.fs.cp("/mnt/ftd/TruthTable.csv", "file:/tmp/TruthTable.csv")

# 用原生open读取字节串
with open("/tmp/TruthTable.csv", "rb") as f:
    byte_content = f.read()

方案2:用Spark binaryFiles直接读取(无需临时文件)

适合不需要落地临时文件的场景,直接通过Spark读取为字节串:

# 读取二进制文件,返回的RDD元素为(文件路径, 字节内容)
binary_rdd = sc.binaryFiles("/mnt/ftd/TruthTable.csv")
# 提取字节内容
byte_content = binary_rdd.collect()[0][1]

方案3:通过Azure Storage SDK直接读取(无需依赖DBFS挂载)

如果不想依赖DBFS挂载,可直接调用ADLS的SDK读取对应存储账户的文件,需要提前配置好存储账户的访问认证:

from azure.storage.blob import BlobClient
from azure.identity import DefaultAzureCredential

blob_url = "abfss://ftd@omitted.dfs.core.windows.net/TruthTable.csv"
# 初始化Blob客户端,用集群托管身份认证即可
blob_client = BlobClient.from_blob_url(blob_url, credential=DefaultAzureCredential())
# 直接下载为字节串
byte_content = blob_client.download_blob().readall()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:03