【问题标题】:Run a Spark job for different parallelism degrees针对不同的并行度运行 Spark 作业
【发布时间】:2021-08-04 23:27:53
【问题描述】:

我想比较不同并行度的 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.

有什么想法吗?

【问题讨论】:

  • 你能不能提一下你在做什么?我的意思是转变和行动
  • 您的工作性能主要取决于您正在执行的数据和转换,而不是单个配置。你能展示你的代码并解释你的数据是什么样的吗?
  • 这是一项大型工作,我使用多个操作和动作,但作为总结:加载数据,使用kFold 拆分数据,应用 mllib RF 算法等但是你告诉我没有修复所需的并行度的方法?我想我误解了这个概念,因为我想比较不同数量的分区或内核的运行时,看看如果我添加更多资源会变得多快

标签: apache-spark scalability


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2014-01-25
    • 2023-03-29
    • 2015-05-31
    相关资源
    最近更新 更多