【问题标题】:Spark executes joins sequentially even though they are submitted in parallel threadsSpark 按顺序执行连接,即使它们是在并行线程中提交的
【发布时间】:2018-12-06 19:17:40
【问题描述】:

我在 Spark 的驱动程序节点上运行 4 个并行线程,它们执行相同的操作但使用不同的数据。 Spark 确实并行执行所有提交的作业,直到有一个连接点。此时,连接操作按顺序完成。 这是 SparkUI 显示的内容:

有什么办法可以让连接并行运行吗?

更新:

我用来启动进程的命令是:

spark-submit  
   --master local[16]  
   --class ...  
   --driver-memory 11G  
   --conf spark.default.parallelism=4  
   --conf spark.sql.shuffle.partitions=4

我只使用 4 个分区,因为我处理的数据非常小 (2-3MB)。
目前我正在本地模式下进行测试。 对于生产,我将使用 EMR 集群。

【问题讨论】:

  • 您好,欢迎来到 SO,也许可以创建 tour 并确保阅读 How to Ask。您可以通过添加minimal reproducible example 来改进您的问题
  • 你是如何在集群中启动这个作业的?向我们展示您正在使用的命令。我的猜测是,由于连接操作需要对数据进行混洗,因此没有足够的资源来同时执行多个作业。
  • 嗨#MBillau,我添加了启动命令。

标签: apache-spark apache-spark-sql apache-spark-dataset


【解决方案1】:

问题是我在加入后立即保留了数据。删除persist后,连接是并行完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    相关资源
    最近更新 更多