如何从 pyspark 数据框中更快地保存 csv 文件?

Chi*_*lvi 4 python hadoop apache-spark pyspark

我目前在本地 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))
Run Code Online (Sandbox Code Playgroud)

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

Vzz*_*arr 7

在报告的两个示例中,您都在降低并行度。

在第一个示例 ( toPandas) 中,从计算上讲就像调用函数collect()。您将数据帧收集到驱动程序的集合中,使其成为单线程的。

在您调用的第二个示例中repartition(1),它将并行级别降低到 1,使其再次成为单线程。

尝试改为使用repartition(2)(或 4 或 8... 根据您机器的可用执行线程数)。这应该会利用 Spark 并行性产生更快的结果(即使它将结果拆分为多个文件,重新分区因子的数量相同)。