我正在使用spark来处理文件输入,由于某种原因,文件的后几个分区需要更多的时间进行计算,从而导致数据偏斜。
所以我想找到一种方法来首先计算后一个分区,该方法将覆盖后一个分区的较长令牌。
我对spark的计算过程有一个大致的了解。
DAGScheduler
创建阶段并以TaskSet
的形式提交阶段。TaskSchedulerImpl
中,我们可以指定SchedulingMode
,但这是针对不同阶段的。TaskSet
都与一个安排任务的TaskSetManager
相对应。我在TaskSetManager
// Add all our tasks to the pending lists. We do this in reverse order
// of task index so that tasks with low indices get launched first.
for (i <- (0 until numTasks).reverse) {
addPendingTask(i)
}
那么我有可能更改任务启动顺序吗?