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

如何将Spark DataFrame转换为JSON对象数组?附示例DataFrame

把Spark DataFrame转换成JSON对象数组的两种方法

没问题,这事儿在Spark里处理起来很简单,我给你两种常用方案,根据你的数据量和需求来选就行:

1. 大数据量场景:直接输出为JSON文件(推荐)

如果你的数据集比较大,千万别把数据拉到本地,直接让Spark写到文件系统里就好。Spark会自动按分区生成文件,性能拉满:

Scala 代码示例

// 假设你的DataFrame叫df
df.write.json("/your/output/path")

Python 代码示例

# 同样假设DataFrame名为df
df.write.json("/your/output/path")

小提示:如果非要合并成单个文件,可以先repartition(1)再写,但大数据量不建议这么做,会拖慢性能哦。

2. 小数据量场景:获取Driver端的JSON字符串数组

如果数据量不大,想直接拿到内存里的JSON数组,用toJSON()配合collect()就搞定了:

Scala 代码示例

// 把每一行转成JSON字符串,再收集成数组
val jsonArray: Array[String] = df.toJSON.collect()

// 打印看看结果
jsonArray.foreach(println)

Python 代码示例

# 生成JSON字符串数组
json_array = df.toJSON().collect()

// 遍历输出
for json_str in json_array:
    print(json_str)

⚠️ 重要提醒:collect()会把整个DataFrame的数据加载到Driver节点的内存中,大数据量这么做会直接内存溢出,只适合小数据集使用!

实际输出示例

对应你给出的DataFrame,输出的JSON字符串大概长这样:

{"user_id":"55c3c59d-0163-46a2-b495-bc352a8de883","city":"Toronto","user_name":"username_x","facebook_id":"0123482174440907"}
{"user_id":"e2ddv22d-4132-c211-4425-9933aa8de454","city":"Washington","user_name":"username_y","facebook_id":"0432982476780234"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:28:37