Databricks读取ADLS Gen2文件报错:无此文件或目录(Runtime版本差异)
问题解决方法
原因分析
Databricks Runtime 12.0及以上版本取消了/mnt到/dbfs/mnt的默认软链接,导致本地文件API(如open())直接访问/mnt/...路径时无法找到文件,而Runtime 11.x版本中该软链接是存在的,所以之前代码可以正常运行。
解决方案
方案1:修改本地文件路径前缀
将读取路径改为/dbfs/mnt/dataverse/model.json(在原路径前添加/dbfs/),因为DBFS的本地挂载根目录是/dbfs,所有DBFS路径都需要通过该目录访问。修改后的代码:
import json with open('/dbfs/mnt/dataverse/model.json', 'r') as f: data = f.read() manifest = json.loads(data)
方案2:使用Databricks原生文件API(推荐)
使用dbutils.fs或Spark API读取文件,这种方式不受Runtime版本变化影响,兼容性更强:
用dbutils.fs读取(适合小文件)
import json data = dbutils.fs.head('/mnt/dataverse/model.json') manifest = json.loads(data)
用Spark API读取(适合大文件)
import json # 读取整个文件为单条记录 df = spark.read.text('/mnt/dataverse/model.json', wholetext=True) data = df.first()[0] manifest = json.loads(data)
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

