将数据帧保存到pyspark中本地驱动器上的JSON文件

时间:2015-06-26 15:38:09

标签: python json apache-spark pyspark

我有一个数据框,我试图使用pyspark 1.4保存为JSON文件,但它似乎不起作用。当我给它指向目录的路径时,它返回一个错误,表明它已经存在。我基于documentation的假设是它会在你给它的路径中保存一个json文件。

df.write.json("C:\Users\username")

指定一个带有名称的目录不会产生任何文件,并给出错误“java.io.IOException:Mkdirs无法创建文件:/ C:Users / username / test / _temporary / .... etc。但它确实创建了一个名为test的目录,其中包含几个带有空白crc文件的子目录。

df.write.json("C:\Users\username\test")

添加JSON的文件扩展名会产生相同的错误

df.write.json("C:\Users\username\test.JSON")

3 个答案:

答案 0 :(得分:4)

你能不能只使用

df.toJSON()

如图here所示? 如果没有,那么首先转换为pandas DataFrame,然后写入json。

pandas_df = df.toPandas()
pandas_df.to_json("C:\Users\username\test.JSON")

答案 1 :(得分:1)

当使用大型数据时,不建议将pyspark数据框转换为熊猫。 您可以使用以下命令将json文件保存在输出目录中。此处df是pyspark.sql.dataframe.DataFrame。集群将在输出目录中生成零件文件。

df.coalesce(1).write.format('json').save('/your_path/output_directory')

答案 2 :(得分:0)

我会避免使用write.json,因为它会导致Windows出现问题。使用Python的文件编写应该跳过创建给你问题的临时目录。

with open("C:\\Users\\username\\test.json", "w+") as output_file:
    output_file.write(df.toJSON())