Есть несколько причин, но давайте вернемся немного назад и поговорим о цепочках операторов.
Цепочка операторов может использоваться, если два последовательных оператора имеют одинаковую степень параллелизма, имеют только один вход / выход, совместно используют слот задачи , а также предоставляют определенные свойства (например, они говорят, что их можно приковать). Самая простая цепочка - это просто серия карт. Но это также может быть источник -> карта -> сток, который может быть полностью связан. Записи в цепочке не сериализуются, а копируются (если не установлено enableObjectReuse
). Я думаю, это то, что вы имели в виду, когда были удивлены сериализацией.
Цепочка операторов, например, разрывается, если у вас более одного входа или явная перестановка в сети. И то, и другое верно для объединений. Таким образом, данные сериализуются. Тем не менее, вы можете иметь две последовательные подзадачи в одной и той же TM. Вот где в игру вступают местные входные каналы, которые соответствуют тому, что вы нашли. Сериализация на локальных входных каналах делает обработку противодавления и контрольных точек намного проще, чем если бы на данном этапе некоторые записи сериализовались, а другие - нет.