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

在Databricks中使用通配符读取JSON文件失败求助

在Databricks用with open批量读JSON文件的解决方案

open()函数本身不支持通配符(比如**/*.json),它只能识别单个具体文件路径,所以直接写通配符路径会报错——系统根本找不到叫/dbfs/mnt/bronze/categories/**/*.json的单个文件。而Spark的read.json()是框架内部做了通配符解析和批量读取的封装,所以能正常工作。

要想用with open实现批量读取,用Python的glob模块就能解决,具体步骤如下:

用glob匹配文件后逐个读取

glob可以解析通配符路径,返回所有符合条件的文件列表,之后遍历列表逐个用with open读取即可:

import glob
import json

# 匹配所有层级子文件夹下的JSON文件,recursive=True必须加,否则**不生效
file_paths = glob.glob('/dbfs/mnt/bronze/categories/**/*.json', recursive=True)

# 收集所有文件的JSON数据
all_json_data = []
for file_path in file_paths:
    with open(file_path, 'r') as f:
        # 读取单个JSON文件内容,根据文件格式调整:
        # 如果是单个JSON对象/数组,用json.load()
        data = json.load(f)
        all_json_data.append(data)
        # 如果是每行一个JSON对象(JSON Lines格式),改用逐行读取:
        # for line in f:
        #     line_data = json.loads(line.strip())
        #     all_json_data.append(line_data)

# 现在all_json_data里就是所有文件的内容了

注意事项

  • 必须加上recursive=True,否则**无法匹配深层子文件夹
  • 如果JSON文件很大,建议不要一次性把所有数据存入列表,而是边读边处理,避免内存溢出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:45:47