如何将pyspark数据帧转换为JSON?

问题描述 投票:1回答:1

我有pyspark数据框,我想将其转换为JSON。为此,我已经完成了以下操作。

df.toJSON().collect()

但是此操作将数据发送给驱动程序,这不仅成本高昂,而且要花费大量时间来执行。我的数据帧包含数百万条记录。因此,没有collect()操作比collect()进行了优化,还有其他方法可以做到这一点。

下面是我的数据框df:-

      product cost
      pen      10
      book     40
      bottle   80
      glass    55

并且输出如下:-

 [{product:'pen',cost:40},{product:'book',cost:40},{product:'bottle',cost:80},{product:'glass',cost:55}]
pyspark pyspark-sql pyspark-dataframes
1个回答
0
投票

对于spark2.0+,您可以使用create_map在两列中创建MapType(),然后使用to_json将其转换为json string

from pyspark.sql import functions as F    
df.withColumn("JSON", F.to_json(F.create_map("product","cost")))\
  .drop("product","cost")\
  .show()

#+-------------+
#|         JSON|
#+-------------+
#|   {"pen":10}|
#|  {"book":40}|
#|{"bottle":80}|
#| {"glass":55}|
#+-------------+
#root
   #|-- JSON: string (nullable = true)
© www.soinside.com 2019 - 2024. All rights reserved.