如何从pysparkDataframe更快地保存csv文件?

fnatzsnv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(561)

我目前正在本地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文件?

ajsxfq5m

ajsxfq5m1#

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

相关问题