【问题标题】:Convert PySpark data frame to JSON with each column as a key将 PySpark 数据帧转换为 JSON,每列作为键
【发布时间】:2019-12-18 09:29:16
【问题描述】:

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

{"Column 1": [9202, 9202, 9202, ....], "Column 2": ["FEMALE", "No matching concept", "MALE", ....]}

所以每列应该有 1 个键,对应的值应该有该列中所有值的列表

我尝试将其转换为 Pandas 数据框,然后转换为 dict,然后将其作为 JSON 转储并成功执行此操作,但由于数据量非常大,我想直接在 PySpark 数据框上执行

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql databricks


    【解决方案1】:

    一种方法是在写入 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")
    

    【讨论】:

      【解决方案2】:
      L = []
      for j in range(0, len(df.columns)):
              arr = []
              for i in range(0, df.count()):
                      arr.append(df.collect()[i][j])
              L.append(arr)
      columns = df.columns
      
      data_dict = dict(zip(columns, L))
      print(data_dict)
      

      【讨论】:

        猜你喜欢
        • 2020-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-18
        • 2021-04-13
        • 1970-01-01
        相关资源
        最近更新 更多