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

如何在Databricks中将JSON对象列表转换为PySpark DataFrame

问题

在Databricks中需将字符串类型的JSON列表转换为PySpark DataFrame。现有变量response_list为字符串类型,内容如下:

[{"sentiment":"neutral","sentiment_confidence_score":0.8585},{"sentiment":"neutral","sentiment_confidence_score":0.7861}]

期望输出的DataFrame每行对应一个JSON对象,格式如下:

pyspark_column
{"sentiment":"neutral","sentiment_confidence_score":0.8585}
{"sentiment":"neutral","sentiment_confidence_score":0.7861}

尝试以下代码后报错:

dfJson = sc.parallelize(response_list).map(lambda x: json.dumps(x))
dfJson = spark.read.json(dfJson)
dfJson.show(truncate = False)

错误信息:

File "<command-3646528696964905>", line 79, in json_parse
    dfJson = sc.parallelize(response_list).map(lambda x: json.dumps(x))
TypeError: parallelize() missing 1 required positional argument: 'c'

JSON格式经验证有效,但转换失败。


解决方案

错误原因

  1. response_list是字符串类型的JSON数组,直接用sc.parallelize()会把字符串拆成单个字符的列表,完全不符合需求。
  2. 错误提示的参数缺失问题,大概率是未正确引用SparkContext(Databricks中需用spark.sparkContext而非未定义的sc)。

正确转换方法

方法1:生成包含原始JSON字符串的DataFrame

按需求保留每行原始JSON字符串:

import json

# 把JSON字符串解析为Python字典列表
parsed_data = json.loads(response_list)
# 将每个字典转回JSON字符串,生成新列表
json_str_list = [json.dumps(item) for item in parsed_data]
# 创建DataFrame并指定列名
df = spark.createDataFrame(json_str_list, "string").toDF("pyspark_column")
df.show(truncate=False)

方法2:解析为结构化DataFrame(拆分字段)

如果需要将JSON的字段拆分为单独列,可直接生成结构化表:

import json

parsed_data = json.loads(response_list)
df = spark.createDataFrame(parsed_data)
df.show(truncate=False)

输出结果:

+--------+-------------------------+
|sentiment|sentiment_confidence_score|
+--------+-------------------------+
|neutral |0.8585                   |
|neutral |0.7861                   |
+--------+-------------------------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:15:25