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

如何在Databricks中将JSON文件读取为字典而非DataFrame

如何在Databricks中将JSON文件读取为字典而非DataFrame

嗨,我来帮你搞定这个问题!在Databricks里把JSON直接读成Python字典,和用Spark生成DataFrame的思路完全不同,我给你两种实用方案,看哪种适合你的场景:

方案一:读取DBFS上的JSON文件(最简单)

如果你的JSON文件已经存在Databricks的DBFS文件系统里,直接用Python原生的json模块读取就行,注意要给DBFS路径加上/dbfs/前缀:

import json

# 替换成你的JSON文件在DBFS上的实际路径
with open('/dbfs/path/to/your/json/file.json', 'r') as file:
    json_dict = json.load(file)

执行后,json_dict就是你想要的Python字典,完全不需要依赖Spark或者AWS SDK。

方案二:读取S3上的JSON文件(解决密钥问题)

你之前用boto3时遇到了密钥配置问题,在Databricks里正确引用Secrets的方式得注意,另外也可以利用Databricks的AWS集成简化操作:

正确配置boto3并读取的代码

import boto3
import json

# 从Databricks Secrets中获取密钥,替换成你的scope名称和key名称
aws_access_key = dbutils.secrets.get(scope="your-secret-scope", key="aws_access_key_id")
aws_secret_key = dbutils.secrets.get(scope="your-secret-scope", key="aws_secret_access_key")

# 初始化S3资源
s3_resource = boto3.resource(
    's3',
    aws_access_key_id=aws_access_key,
    aws_secret_access_key=aws_secret_key
)

# 获取S3对象并解析为字典
s3_object = s3_resource.Object('slm-transaction-incoming', 'All_Starbucks_Locations_in_the_US.json')
json_content = s3_object.get()['Body'].read().decode('utf-8')
json_dict = json.loads(json_content)

简化技巧:如果S3桶已挂载到DBFS

如果你已经把目标S3桶挂载到了DBFS上,那直接用方案一的open函数读取挂载后的路径就行,连boto3都不用,比如:

import json

# 替换成挂载后的DBFS路径
with open('/dbfs/mnt/your-s3-mount/path/to/file.json', 'r') as file:
    json_dict = json.load(file)

另外要提醒你:spark.read.format("json").load()得到的是Spark DataFrame,这是因为Spark是分布式计算框架,它的API默认生成适合分布式处理的数据集,而我们要的是本地的Python字典,所以得用Python原生的文件读取或者直接调用AWS SDK拉取内容来解析。

备注:内容来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 09:43:06