运行 不同并行度的 Spark 作业

Run a Spark job for different parallelism degrees

我想比较不同并行度下 Spark 作业的运行时间,以便分析增加并行度是否更快。问题是我认为我可以通过在创建 Spark 会话时更改以下内容来做到这一点:

 val spark = SparkSession.builder
      .master(master)
      .appName(name)
      .config(conf)
      .config("spark.default.parallelism", number_of_partitions) // this is the value I change

但我已经为 number_of_partitions = 256 试用了我的应用程序,运行时间仅比 number_of_partitions = 1 快 1 分钟!而且我认为这不可能......当并行度为 1 时,我预计会有很大的运行时间。当然 number_of_partitions = 1 在分布式环境中没有意义,但我得到的几乎相同number_of_partitions = 16, 32, 64.

时的运行时间

有什么想法吗?

MLLib 建立在 DataFrame API 之上。这里的并行度由 parameters 控制,例如 spark.files.maxPartitionBytesspark.sql.shuffle.partitions.

(spark.default.parallelism用于在使用RDD时控制并行度API).