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

saving a dataframe to JSON file on local drive in pyspark

我有一个数据框,我正尝试使用 pyspark 1.4 将其另存为 JSON 文件,但它似乎无法正常工作。当我给它目录的路径时,它 returns 一个错误,指出它已经存在。我基于 documentation 的假设是它会在您提供的路径中保存一个 json 文件。

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

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

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

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

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

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

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

你能不能只用

df.toJSON()

如图here? 如果不是,则先转成pandas DataFrame,然后写入json.

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

处理大数据时,不建议将 pyspark 数据帧转换为 pandas。 您可以使用以下命令将 json 文件保存在输出目录中。这里 df 是 pyspark.sql.dataframe.DataFrame。 part文件将由集群在输出目录中生成。

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