Apache spark 在什么情况下,阶段中的所有任务将在同一执行器中执行

Apache spark 在什么情况下,阶段中的所有任务将在同一执行器中执行,apache-spark,Apache Spark,我有一个spark应用程序。它将多次连接某些表并将结果写入HDFS 我的提交脚本: spark-submit \ --master yarn \ --deploy-mode cluster \ --driver-memory 14G \ --driver-cores 6 \ --executor-memory 14G \ --executor-cores 4 \ --num-executors 50 \ --conf spark.sql.autoBroadcastJoinThreshold=31

我有一个spark应用程序。它将多次连接某些表并将结果写入HDFS

我的提交脚本:

spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 14G \
--driver-cores 6 \
--executor-memory 14G \
--executor-cores 4 \
--num-executors 50 \
--conf spark.sql.autoBroadcastJoinThreshold=31457280 \
--conf spark.sql.shuffle.partitions=200 \
--class my.main.class\
my.jar
问题: 在Spark WebUI中,各个阶段在同一个执行器中执行: 为什么在同一个执行器pc-XX269中执行一个阶段中的200个任务?
可能有两种情况发生 1.没有应用正确的分区
2.如果您使用的是Hash partitioned,那么所有键的Hash值都足够接近

谢谢@Guda我使用的是Hash partitioned。但如果键哈希值足够接近,它应该是倾斜的。就像:task1 extcute 1G data和task2-200不执行任何操作。您从哪个源读取?从HDFS读取的所有表是否在HDFS集群上运行Spark?Thnaks@yuval。是的,
--主纱线--部署模式群集
指定Spark在纱线群集上运行您的数据是否正确地跨HDFS数据节点复制,以便您可以从不同的执行器读取不同的文件?