我目前在本地 Windows 10 系统上使用 pyspark。 pyspark 代码运行速度非常快,但需要花费大量时间将 pyspark 数据帧保存为 csv 格式。

我正在将 pyspark 数据框转换为 Pandas,然后将其保存到 csv 文件。我也尝试过使用 write 方法来保存 csv 文件。

Full_data.toPandas().to_csv("Level 1 - {} Hourly Avg Data.csv".format(yr), index=False)




Full_data.repartition(1).write.format('com.databricks.spark.csv').option("header", "true").save("Level 1 - {} Hourly Avg Data.csv".format(yr))

两个代码都花了大约一个小时来保存 csv 文件。有没有更快的方法来从 pyspark 数据框中保存 csv 文件?

最佳答案

在报告的两个示例中,您都在降低并行度。
在第一个示例( toPandas )中,计算上就像调用函数 collect() 。您将数据帧收集到驱动程序的集合中,使其成为单线程的。
在第二个示例中,您调用 repartition(1) 将并行级别降低到 1,使其再次成为单线程。
尝试改用 repartition(2) (或 4 或 8 ... 根据您机器的可用执行线程数)。这应该会利用 Spark 并行性产生更快的结果(即使它将结果拆分为多个文件,重新分区因子的数量相同)。

关于python - 如何从 pyspark 数据框中更快地保存 csv 文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57311192/

10-14 18:23
查看更多