我正在学习PySpark
。我将CSV
文件加载到Spark DataFrame
。之后我做了一些数据转换。最后,我想将一些列放入嵌套结构中,然后以JSON
格式保存。
这是我的示例代码:
df = spark.createDataFrame([("Bilbo Baggins", 50), ("Gandalf", 32), ("Thorin", 19),
("Balin", 18), ("Kili", 37),("Dwalin", 19), ("Oin", 46),
("Gloin", 28), ("Fili", 22)], ["name", "age"])
mod_df = df.select(struct([col(x) for x in df.columns[:]]).alias("PersonalDetails"))
当我将其保存为JSON文件时,它看起来像:
{
"PersonalDetails" :
{
"name" : "Balin",
"age" : 18
}
}
{
"PersonalDetails" :
{
"name" : "Gloin",
"age" : 28
}
}
如您所见,它们作为单独的文档出现。但是我想让它们出现在一个包含数组格式的文档中,例如:
{
"PersonalDetails" :[
{
"name" : "Balin",
"age" : 18
},
{
"name" : "Gloin",
"age" : 28
}
]
}
你能帮助我做错吗?谢谢:))
答案 0 :(得分:2)
from pyspark.sql import functions as F
mod_df = df.select(
F.struct(df.columns).alias('PersonalDetails')
).select(
F.collect_list('PersonalDetails').alias('PersonalDetails')
)