Databricks中glob.glob无法找到文件返回空列表报错排查
问题原因及解决方案
核心原因
- 路径访问方式错误:
glob是本地文件系统工具,Databricks中/FileStorage是DBFS(Databricks文件系统)的逻辑路径,本地无法直接访问,需使用DBFS的本地挂载路径/dbfs/FileStorage。 - 通配符未启用递归:
glob的**通配符默认不递归搜索子目录,必须指定recursive=True参数才能生效。 - 文件缺失或路径错误:目标文件
sample.json可能未上传至指定路径,或路径中的目录名、大小写存在拼写错误。
修复后的代码
import glob # 使用DBFS本地挂载路径,开启递归搜索 temp_path_list = glob.glob("/dbfs/FileStorage/user/final/**/sample.json", recursive=True) if temp_path_list: # 移除开头的/dbfs前缀,适配spark.read.json的路径格式 temp_path = temp_path_list[-1][5:] sample = spark.read.json(f"FileStorage:{temp_path}") else: print("未找到sample.json文件,请检查路径、文件存在性或权限")
额外排查步骤
- 验证文件存在性:在Databricks文件浏览器中查看
/FileStorage/user/final目录,或执行以下命令递归列出文件:dbutils.fs.ls("/FileStorage/user/final", recursive=True) - 检查路径拼写:确认路径中的目录名称、大小写完全匹配,DBFS路径区分大小写。
- 确认权限:确保当前用户拥有访问
/FileStorage/user/final目录及文件的权限。
内容的提问来源于stack exchange,提问作者Jilinnie Park
相关产品推荐
相关产品推荐

