У нас есть пользовательская функция объединения (в beam sdk 2.0), в которой миллионы объектов накапливаются, но они НЕ обязательно уменьшаются... то есть они иногда добавляются в список, так что в конечном итоге список может стать довольно большие (сотни мегабайт, даже гигабайты).
Чтобы свести к минимуму проблему «обхода» этих объектов (во время слияния аккумуляторов) между узлами, мы создали ОДИН гигантский узел (64 ядра, тонны оперативной памяти).
Таким образом, в «теоретике» потоку данных не нужно сериализовать объект списка (и любой из этих больших объектов в списке) даже во время операций «аккумулятора слияния», поскольку все объекты находятся на одном узле. Но сериализуется ли поток данных по-прежнему, даже если все интересующие объекты находятся на одном узле, или он достаточно умен, чтобы знать, что объект находится на одном узле, а не на разных узлах?
В идеале, когда объекты находятся на одном узле, мы можем просто передавать ссылки на объекты (вместо сериализации/десериализации содержимого этих объектов, которые могут быть очень и очень большими). Конечно, чем при работе с несколькими узлами, нет другого выбора, кроме как сериализовать/десериализовать, поскольку данные должны каким-то образом передаваться; но внутри узла луч SDK 2.0 достаточно умен, чтобы не сериализовать/десериализовать во время этих функций объединения, группировать по так далее.?)