我目前正在本地windows10系统上使用pyspark。pyspark代码运行速度很快,但将pysparkDataframe保存为csv格式需要大量时间。
我正在将pysparkDataframe转换为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文件。有没有更快的方法从pysparkDataframe保存csv文件?
1条答案
按热度按时间ajsxfq5m1#
在报告的两个示例中,您都在降低并行性级别。
在第一个例子中(
toPandas
)计算上讲就像调用函数collect()
. 将Dataframe收集到驱动程序的集合中,使其成为单线程的。在第二个示例中,您正在调用
repartition(1)
这将并行级别降低到1,使其再次成为单线程。试着用
repartition(2)
(或4或8。。。根据机器的可用执行线程数)。利用spark并行性,应该可以更快地产生结果(即使它将结果分割成多个文件,重新划分因子的数目相等)。