pyspark加速写入S3



我有一个包含约150K元素的RDD,将其写入S3大约需要5个小时我想加快速度,我已经尝试过,调整火花参数目前使用以下设置:

--executor-memory 19g --num-executors 17 --executor-cores 5 --driver-memory 3g

这就是我写S3的方式:

rdd.repartition(1).write.partitionBy('id').save(path=s3_path, mode='overwrite', format='json')

然而,所有来自各种在线资源的火花参数的调整,只缩短了几分钟的过程。我正在寻找如何将运行时间减少50%的想法

问题在于1的重新分区。这样做会迫使Spark只使用1个核心进行编写。您将所有数据放在集群的单个执行器中。你让其他16名执行者没有数据或任务。

如果你想平衡最终输出文件的大小,你可以使用重新分区,但要确保你使用了足够的核心来加快写入速度。

在您的示例中,最多有17*5个内核可用于编写。例如,如果您希望在速度和输出文件数量之间进行权衡,则可以按32重新分区。

最新更新