我有一个数据框,我试图使用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")
答案 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())