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

Azure HDInsight Blob Store读取CSV文件报错:路径不存在但文件实际存在

排查Jupyter Notebook读取Azure HDInsight Blob存储文件失败的问题

我帮你梳理几个常见的排查方向,这种“文件明明存在却报路径不存在”的问题,大多是细节没对上:

1. 核对wasb路径的格式细节

Azure Blob的路径格式容不得半点错,仔细检查这几个点:

  • 确认容器名spk123-2018、存储账户名dreamcatcher完全匹配Blob存储里的实际名称,容器和文件名都是大小写敏感的,别小看大小写差异!
  • 如果你的存储是Azure Data Lake Storage Gen2,记得用abfs协议而不是wasb,比如把路径改成abfs://spk123-2018@dreamcatcher.dfs.core.windows.net/data/raw-flight-data.csv,这是很容易混淆的点

2. 验证HDInsight集群的访问权限

就算文件在那,集群没权限也读不到:

  • 如果你用的是存储账户访问密钥,在Notebook里跑这段代码检查配置是否生效:
    sc._jsc.hadoopConfiguration().get("fs.azure.account.key.dreamcatcher.blob.core.windows.net")
    
    如果返回None,说明密钥没配置成功,手动添加:
    spark.conf.set(
        "fs.azure.account.key.dreamcatcher.blob.core.windows.net",
        "<你的存储账户访问密钥>"
    )
    
  • 如果用托管标识,确认这个标识已经被授予了目标Blob容器的存储Blob数据读取者角色

3. 检查文件名和路径的大小写、特殊字符

  • Blob存储对文件名的大小写是严格区分的,比如Raw-Flight-Data.csv和raw-flight-data.csv会被当成两个不同文件,仔细核对你的文件名是否完全一致
  • 如果路径里有空格、括号这类特殊字符,尝试用引号包裹路径,或者直接复制Blob存储里的完整路径粘贴到代码里,避免手动输入错误

4. 直接测试路径的可达性

在Notebook里尝试列出目录内容,确认路径是否真的能访问:

# 列出容器根目录的内容
dbutils.fs.ls("wasb://spk123-2018@dreamcatcher.blob.core.windows.net/")
# 列出data子目录的内容
dbutils.fs.ls("wasb://spk123-2018@dreamcatcher.blob.core.windows.net/data/")

如果这一步报错,说明集群和Blob存储的连通或权限有问题;如果能看到文件,再核对文件名和你要读取的是否完全匹配

5. 尝试用相对路径访问(针对默认存储)

如果这个文件在HDInsight集群的默认存储容器里,试试用相对路径简化操作:

df = spark.read.csv("/data/raw-flight-data.csv", header=True)

这样可以排除wasb协议格式带来的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:19:06