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

PySpark DataFrame使用to_json()函数转换整行为JSON列的实现

我来帮你把这段PySpark的内容整理成清晰的Markdown格式,顺便解释下实现逻辑~

PySpark 将DataFrame每行转换为JSON列

首先来看我们的原始PySpark DataFrame:

>>> df.show(10,False)
+-----+----+---+------+
|id   |name|age|salary|
+-----+----+---+------+
|10001|alex|30 |75000 |
|10002|bob |31 |80000 |
|10003|deb |31 |80000 |
|10004|john|33 |85000 |
|10005|sam |30 |75000 |
+-----+----+---+------+

我们的需求是把这个DataFrame的每一行转换成一个新的JSON格式列jsonCol,对应的实现代码如下:

>>> newDf1 = df.withColumn("jsonCol", to_json(struct([df[x] for x in df.columns])))
>>> newDf1.show(10,False)
+-----+----+---+------+----------------------------------------------------+
|id   |name|age|salary|jsonCol                                             |
+-----+----+---+------+----------------------------------------------------+
|10001|alex|30 |75000 |{"id":"10001","name":"alex","age":"30","salary":"75000"}|
|10002|bob |31 |80000 |{"id":"10002","name":"bob","age":"31","salary":"80000"}|
|10003|deb |31 |80000 |{"id":"10003","name":"deb","age":"31","salary":"80000"}|
|10004|john|33 |85000 |{"id":"10004","name":"john","age":"33","salary":"85000"}|
|10005|sam |30 |75000 |{"id":"10005","name":"sam","age":"30","salary":"75000"}|
+-----+----+---+------+----------------------------------------------------+

简单拆解下这段代码的逻辑:

  • struct([df[x] for x in df.columns]):把DataFrame的所有列打包成一个结构体(struct)对象,相当于把每一行的所有字段整合到一个嵌套结构里
  • to_json():将这个结构体对象序列化为JSON格式的字符串,最终生成我们需要的jsonCol列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:03:13