Databricks DataFrame无法保存至Azure Gen2存储账户,求排查
验证挂载点有效性
先执行dbutils.fs.ls("/mnt/youtubedataset"),如果无法列出容器内的文件,说明挂载未真正生效。可能是挂载时的服务主体(SPN)权限不足、SAS令牌过期,或者挂载命令中的账户/容器名称写错。检查目标目录权限与可创建性
虽然写入Parquet时会自动创建目录,但挂载身份需要容器的写入(W)和创建(C)权限。可以先手动创建目录测试:dbutils.fs.mkdirs("/mnt/youtubedataset/youtube/cleansed"),如果执行失败,直接指向权限配置问题。指定写入模式并验证DataFrame数据
默认写入模式为errorifexists,若目标目录已存在(哪怕为空)会静默失败(部分场景下无报错提示)。建议显式指定模式:df.write.mode("overwrite").parquet("/mnt/youtubedataset/youtube/cleansed")。同时用df.count()或df.show()确认DataFrame不为空,空DataFrame写入不会生成任何文件。核对挂载配置细节
检查挂载ADLS Gen2时的参数:确保account_name、container_name正确,身份验证方式(SPN的client-id/tenant-id/client-secret,或SAS令牌)有效且权限足够。比如SPN需要被赋予容器的“存储 blob 数据参与者”角色,SAS令牌需包含写入权限。查看完整执行日志
若在笔记本执行,确认单元格已完整执行(左侧显示绿色对勾);若为作业运行,查看作业日志中write步骤的详细报错——Databricks部分场景下不会在单元格输出中显示权限拒绝、路径无效等深层错误,日志会给出明确提示。
内容的提问来源于stack exchange,提问作者user22428402

