Apache spark 将PySpark数据帧转换为JSON,每列作为一个键

Apache spark 将PySpark数据帧转换为JSON,每列作为一个键,apache-spark,pyspark,apache-spark-sql,databricks,Apache Spark,Pyspark,Apache Spark Sql,Databricks,我正在做PySpark。我有一个数据帧,需要将其转储为JSON文件,但是JSON文件应具有以下格式,例如- {"Column 1": [9202, 9202, 9202, ....], "Column 2": ["FEMALE", "No matching concept", "MALE", ....]} 因此,每列应该有一个键,相应的值应该有该列中所有值的列表 我尝试将其转换为Pandas数据帧,然后在将其作为JSON转储之前将其转换为dict,并成功地实现了这一点,但由于数据量非常大,我希

我正在做
PySpark
。我有一个数据帧,需要将其转储为
JSON
文件,但是
JSON
文件应具有以下格式,例如-

{"Column 1": [9202, 9202, 9202, ....], "Column 2": ["FEMALE", "No matching concept", "MALE", ....]}
因此,每列应该有一个键,相应的值应该有该列中所有值的列表


我尝试将其转换为Pandas数据帧,然后在将其作为JSON转储之前将其转换为dict,并成功地实现了这一点,但由于数据量非常大,我希望直接在PySpark数据帧上执行此操作,一种方法是在写入JSON之前将每个列值收集为数组。试试这个:

column_arrays = [collect_list(c).alias(c) for c in df.columns]
df2 = df.groupBy().agg(*column_arrays)

df2.coalesce(1).write.mode("overwrite").json("/path")

一种方法是在写入JSON之前将每列值收集为数组。试试这个:

column_arrays = [collect_list(c).alias(c) for c in df.columns]
df2 = df.groupBy().agg(*column_arrays)

df2.coalesce(1).write.mode("overwrite").json("/path")