首页 > 解决方案 > 为什么 Spark 将所有任务发送给两个执行器?

问题描述

这是情况的图片:

在此处输入图像描述

我的代码:

rdd = spark.read.format("avro").load(paths).rdd.repartition(160).flatMap(parse_source_data).repartition(20)

parse_source_data是一个昂贵的 Python 函数,它映射到所有数据。正如预期的那样,我看到了 160 个总任务。Spark 声称正如预期的那样,有 80 个同时运行。但实际上,似乎所有任务都由两个执行者运行。

有人有想法么?

标签: apache-sparkpyspark

解决方案


我正在为工人创建一个 SparkContext。这阻止了工人被用于实际工作。


推荐阅读