Apache spark 为什么我只看到200个阶段的任务?

Apache spark 为什么我只看到200个阶段的任务?,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我有一个spark群集,有8台机器,256核,每台机器180Gb内存。我已经启动了32个执行器,每个执行器有32个内核和40Gb ram 我正在尝试优化一个复杂的应用程序,我注意到很多阶段都有200个任务。在我的情况下,这似乎是次优的。我已尝试将参数spark.default.parallelism设置为1024,但似乎没有效果 我运行spark 2.0.1,在独立模式下,我的驱动程序托管在pycharm调试会话内运行的工作站上。我已将spark.default.parallelism设置为:

我有一个spark群集,有8台机器,256核,每台机器180Gb内存。我已经启动了32个执行器,每个执行器有32个内核和40Gb ram

我正在尝试优化一个复杂的应用程序,我注意到很多阶段都有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)吗?在任何地方这样做似乎都是一种负担。

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

其中8是要创建的分区数。

或SparkSession,

.config(“spark.sql.shuffle.partitions”,“2”)

尝试在该配置中设置:set(“spark.sql.shuffle.partitions”,“8”),其中8是您希望复制的分区数,但为什么只希望使用8?据我所知,它应该等于或大于同时运行的任务数。因此,对于其他任何发现这一点的人来说,将每个执行器的内核数调整为8,并将spark.sql.shuffle.partitions=256在我的情况下提供了最好的性能。