pyspark 为什么即使分区是均匀分布的,增加spark作业中的核心数量也不会减少所需的时间?

lnvxswe2  于 4个月前  发布在  Spark
关注(0)|答案(1)|浏览(55)

我有一个pyspark作业,它只是从一个parquet文件夹路径读取文件并写入另一个文件夹路径

spark = SparkSession.builder \
    .appName("Read Write Parquet EFS") \
    .getOrCreate()
input_folder_path = "/home/ubuntu/efs-spark/10M-32part/input"
output_folder_path = "/home/ubuntu/efs-spark/10M-32part/output"
df = spark.read.parquet(input_folder_path)
df = spark.write.parquet(output_folder_path)

字符串
输入数据:10 M行,
CPU:16
耗时:10秒
分区:16
CPU:32
耗时:10秒
分区:32
唯一被分割和处理的任务是写操作,即使是16或32核也需要5秒,我还确认了分区是否均匀分布在16(每个625000行)和32(每个312500行)分区中。
我的问题是,在这种情况下,由于每个分区的大小是在32个分区与32个CPU的写入速度应该更快,说2.5秒,如果16个分区与16个CPU,但都采取~5秒。
我还确认了两种执行中每个任务所花费的时间都是4000到5000毫秒,这两种情况下的任务之间没有区别。
我错过了什么,为什么32个CPU的进程没有在2.5秒内完成。
我希望在32 CPU的情况下在2.5秒内完成写入任务,因为在16 CPU的情况下完成任务需要5秒,但没有区别,32 CPU的任务也需要5秒。

vom3gejh

vom3gejh1#

看起来你是在一台独特的机器上。此外,你只是将数据从一个目录复制到同一个磁盘上的另一个目录。在这种情况下,限制因素不是计算能力,而是磁盘I/O速度。

因此,增加内核数量不会使您的工作更快,因为在您的情况下,您受到磁盘I/O速度的限制

相关问题