首页 文章

为什么我只能分阶段看到200个任务?

提问于
浏览
3

我有一台火花机群,每台机器有8台机器,256个核心,180Gb内存 . 我已经启动了32个 Actuator ,每个 Actuator 有32个内核和40Gb内存 .

我正在尝试优化复杂的应用程序,我注意到很多阶段都有200个任务 . 在我的情况下,这似乎是次优的 . 我已经尝试将参数spark.default.parallelism设置为1024,但它似乎没有任何效果 .

我运行spark 2.0.1,在独立模式下,我的驱动程序托管在运行pycharm调试会话的工作站上 . 我在下面设置了spark.default.parallelism:

工作站上的

  • spark-defaults.conf
    集群spark / conf目录中的

  • spark-defaults.conf

  • 在我的驱动程序上构建SparkSession的调用中

这是那个电话

spark = SparkSession \
    .builder \
    .master("spark://stcpgrnlp06p.options-it.com:7087") \
    .appName(__SPARK_APP_NAME__) \
    .config("spark.default.parallelism",numOfCores) \
    .getOrCreate()

自从进行这些更改后,我重新启动了执行程序 .

如果我理解正确,在一个阶段只有200个任务意味着我的集群没有被充分利用?

当我使用htop观看机器时,我可以看到我没有获得完整的CPU使用率 . 也许一次在一台机器上,但不是在所有机器上 .

我需要在我的数据帧上调用.rdd.repartition(1024)吗?看起来像是在任何地方做到这一点的负担 .

2 回答

  • 0

    尝试在此配置中设置: set("spark.sql.shuffle.partitions", "8")

    其中8是您要创建的分区数 .

  • 0

    或SparkSession,
    .config("spark.sql.shuffle.partitions","2")

相关问题