将PySpark中的列对象转换为DataFrame

-1 投票
2 回答
44 浏览
提问于 2025-04-12 12:50

我有一个JSON格式的列表,我正在用from_json来读取它。请问我该如何把得到的列类型转换成一个只有一列的数据框呢?

from pyspark.sql.functions import from_json
from pyspark.sql.types import ArrayType, StringType

jsonlist = '["a","b","c"]'
col = from_json(jsonlist , ArrayType(StringType()))

# how to I create a dataframe?
df = ...

我尝试过的所有方法都出现了

类型错误:列是不可迭代的

例如

spark.createDataFrame([col], ['item'])

2 个回答

1

这段代码可以完成任务:

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType
import json

spark = SparkSession.builder \
    .appName("JSON to DataFrame") \
    .getOrCreate()
json_string = "['a','b','c']"
json_list = json.loads(json_string.replace("'", "\""))
schema = StructType([
    StructField("Column1", StringType(), True)
])
df = spark.createDataFrame([(value,) for value in json_list], schema=schema)
df.show()
0

我发现其实可以不使用pyspark的函数来解析JSON数据,直接这样做就可以了:

import json
json = '["a","b","c"]'
jsonlist = json.loads(json)
df= spark.createDataFrame([x for x in zip(*[iter(jsonlist )])], ['item'])
display(df)

撰写回答