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

为何在Azure Synapse Notebook写入Blob时仅报‘指定Blob不存在’错误?

解决Azure Synapse Notebook写入Blob存储CSV报404错误的方案

以下是针对「能读取Blob存储同路径文件,但写入新文件时报HTTPError: HTTP Error 404: The specified blob does not exist.」问题的排查和解决步骤:

1. 确认目标虚拟文件夹的存在性

Blob存储中的「文件夹」是虚拟概念,仅当文件夹下存在Blob文件时才会被系统识别。如果要写入的{FOLDER}是新建的,或者原文件夹因所有文件被删除而「消失」,直接写入会触发404错误。

  • 解决:先通过Azure Portal、Azure CLI或SDK在容器内创建该虚拟文件夹(上传一个空文件到目标路径即可),或者使用支持自动创建父路径的写入方式(如Spark的write API、ADLS Gen2的abfss协议)。

2. 验证写入权限

读取文件仅需只读权限,但写入需要存储Blob数据参与者或包含**写入(Write)**权限的自定义角色。

  • 解决:在Azure Portal的存储容器IAM权限页,检查Synapse工作区托管身份/使用的服务主体是否拥有目标容器的写入权限,若没有则添加对应角色。

3. 检查路径格式与合法性

  • 避免使用https://直接写入:Synapse中读写Blob存储建议使用wasbs://(通用Blob存储)或abfss://(ADLS Gen2)协议,https://路径通常仅用于读取,不支持写入操作。正确路径示例:
    # 通用Blob存储
    wasbs://{CONTAINER}@{ACCOUNTNAME}.blob.core.windows.net/{FOLDER}/{FILENAME}.csv
    # ADLS Gen2(启用层级命名空间)
    abfss://{CONTAINER}@{ACCOUNTNAME}.dfs.core.windows.net/{FOLDER}/{FILENAME}.csv
    
  • 检查路径拼写:容器名必须为小写,Blob路径区分大小写,确保{ACCOUNTNAME}、{CONTAINER}、{FOLDER}无拼写错误;避免路径包含空格、特殊符号(如!@#$%^&*),若必须使用需进行URL编码。

4. 调整写入代码逻辑

若使用Spark Notebook写入

确保使用正确的写入模式和配置,示例代码:

# 假设df是要写入的DataFrame
df.write.csv(
    "wasbs://{CONTAINER}@{ACCOUNTNAME}.blob.core.windows.net/{FOLDER}/{FILENAME}.csv",
    header=True,  # 写入表头
    mode="overwrite",  # 覆盖已有文件或创建新文件
    encoding="utf-8"
)

如果需要生成单个CSV文件,可先合并分区:

df.coalesce(1).write.csv(...)

若使用Pandas写入

Pandas默认不支持直接写入https://路径,需借助adlfs或azure-storage-blob库实现,示例:

import pandas as pd
from adlfs import AzureBlobFileSystem

# 初始化文件系统
fs = AzureBlobFileSystem(
    account_name="{ACCOUNTNAME}",
    account_key="{ACCOUNTKEY}"  # 或使用SAS token、托管身份认证
)

# 写入CSV
with fs.open("{CONTAINER}/{FOLDER}/{FILENAME}.csv", 'w') as f:
    df.to_csv(f, index=False, header=True)

5. 检查ADLS Gen2层级命名空间(若适用)

若存储账户启用了ADLS Gen2层级命名空间,需使用abfss://协议,并确保身份拥有对目标目录的写入权限(可通过存储资源管理器或IAM配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:46:04