将PySpark中的列对象转换为DataFrame
我有一个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)