Databricks中df.display()与df.show()报错问题求助
问题现象
- 执行
df.display()时触发报错:Failed to store the result. Try rerunning the command. Failed to upload command result to DBFS. Error message: PUT request to create file error HttpResponse Proxy(HTTP/1.1 404 The specified filesystem does not exist. [Content-Length: 175. Content-Type: application/json;charset=utf-8, Server: Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0, x-ms-error-code: FilesystemNotFound, x-ms-request-id: 33854442-8011- 0028-3da6-bc0285000000, x-ms-version: 2021-04-10, Date: Wed, 12 Jun 2024 08:59:45 GMT] Response Entity Proxy([Content-Type: application/json;charset=utf-8 Content-Length: 175, Chunked: false]))
- 使用
df.show()处理超过10-20行的DataFrame时,出现完全相同的错误
已完成的排查动作
- 集群日志确认根存储写入失败:
- ERROR PresignedUrlClientUtils$: FS_OP_CREATE FILE[https://<root_storage-account-name>.dfs.core.windows.net/jobs/4079550013704479/command-results/4056370604825597/b3041abc-2eeb-45da-90b7-23d98973d4d0] Presigned URL: Failed to upload stream using AzureAdl2SasUri*
- UI上传文件到DBFS时提示
The Azure Container Does Not exist及500错误,但托管资源组内存在对应的托管存储账户 - 从共享位置导入3-4个Notebook时触发相同报错
- 更换集群类型、Databricks运行时版本后问题未缓解
- 当前账号拥有Databricks工作区管理员权限,使用Premium版(启用RBAC)
- 通过存储凭证可正常访问独立存储账户,数据工程操作不受影响
可行的解决方案
1. 确认托管存储容器状态
托管资源组内的存储由Databricks管理,但可能出现容器误删或配置异常。联系Azure技术支持,确认<root_storage-account-name>对应的ADLS Gen2容器(尤其是jobs容器)是否存在、状态是否正常。
2. 验证工作区根存储配置
作为工作区管理员,进入Databricks控制台的工作区设置 -> 存储页面,检查根存储的关联配置是否正确,确认容器名称、存储账户绑定关系无误。若配置异常,需联系Databricks支持协助重新关联托管存储。
3. 临时绕过托管根存储(紧急恢复)
若需快速恢复操作,可将命令结果存储路径切换到你有权限的独立存储账户:
- 创建存储凭证指向你的独立存储账户
- 在集群初始化脚本中添加以下配置:
此配置会让spark.databricks.commandResultsStorageUri abfss://<container-name>@<your-storage-account>.dfs.core.windows.net/command-resultsdf.display()、df.show()的结果写入指定存储,绕过托管根存储的访问问题。
4. 排查Azure RBAC权限
虽然你是Databricks工作区管理员,但Azure层面的RBAC权限可能影响托管存储访问。检查你的Azure AD账户是否拥有托管存储账户的Storage Blob Data Contributor或等效权限,部分场景下用户需要直接的存储权限才能完成写入操作。
5. 提交Databricks支持工单
由于托管根存储属于Databricks托管资源,用户无法直接操作,建议提交官方支持工单,并提供以下信息:
- 工作区ID、集群ID
- 完整的报错日志(集群日志、UI报错截图)
- 托管资源组名称及存储账户名称
让官方团队排查托管存储的配置或权限异常。
内容的提问来源于stack exchange,提问作者Vishal

