代码之家  ›  专栏  ›  技术社区  ›  Shankar Panda

Pyspark:如何将spark数据帧转换为json并保存为json文件?

  •  0
  • Shankar Panda  · 技术社区  · 6 年前

    我正在尝试将我的pysparksql数据帧转换为json,然后另存为一个文件。

    df_final = df_final.union(join_df)
    

    enter image description here

    我试过这样的方法。但它创建了一个无效的json。

    df_final.coalesce(1).write.format('json').save(data_output_file+"createjson.json", overwrite=True)
    
    {"Variable":"Col1","Min":"20","Max":"30"}
    {"Variable":"Col2","Min":"25,"Max":"40"}
    

    我的预期文件应包含以下数据:

    [
    {"Variable":"Col1",
    "Min":"20",
    "Max":"30"},
    {"Variable":"Col2",
    "Min":"25,
    "Max":"40"}]
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Sahil Desai    6 年前

    pyspark 您可以直接将您的数据帧存储到json文件中,不需要将datafram转换为json。

    df_final.coalesce(1).write.format('json').save('/path/file_name.json')
    

    仍然需要将datafram转换为json,然后才能使用 df_final.toJSON() .

        2
  •  1
  •   OmG    6 年前

    collect 然后用 json.dump :

    import json
    collected_df = df_final.collect()
    with open(data_output_file + 'createjson.json', 'w') as outfile:
        json.dump(data, outfile)
    
        3
  •  1
  •   chilun    6 年前

    如果您想使用spark将结果作为json文件处理,我认为您的输出模式在hdfs中是正确的。

    我假设您遇到了这样一个问题,即使用以下命令无法顺利地从普通python脚本中读取数据:

    with open('data.json') as f:
      data = json.load(f)
    

    您应该尝试逐行读取数据:

    data = []
    with open("data.json",'r') as datafile:
      for line in datafile:
        data.append(json.loads(line))
    

    你可以用 pandas

    df = pd.DataFrame(data)