Задача и подзадача наиболее плохо спроектированы и реализованы как в концепции, так и в коде. subtask - это наименьшая единица работы, выполняемая потоком, но в исходном коде Flink нет класса с именем Subtask или чего-то подобного. Что касается проводов, существует класс с именем Task, который реализует Runanble, что означает, что Task - это модуль, который будет выполняться в потоке.
Задача во Flink больше похожа на TaskSet или Stage in Spark, а подзадача во Flink больше похожа на Task в Spark