Совместное использование состояния операторами в Flink

Интересно, можно ли во Flink разделить состояние между операторами.

Скажем, например, что у меня есть разделение по ключу на операторе, и мне нужен фрагмент состояния раздела A внутри раздела C (по любой причине) (рис. 1.a), или мне нужно состояние оператора C в последующем операторе F (рис 1.b).

введите описание изображения здесь

Я знаю, что можно broadcast записей во все разделы. Итак, если вы включите внутреннее состояние оператора в записи, вы можете поделиться своим внутренним состоянием с последующими операторами.
Однако это может быть дорогостоящей операцией, вместо того, чтобы просто позволить op1 специально запрашивать op2 состояние.

Двигаются ли последние разработки в области запрашиваемого состояния в сторону этой концепции или они предназначены только для того, чтобы позволить внешнему пользователю запрашивать внутреннее состояние топологии?

Заранее благодарим вас за понимание


person affo    schedule 13.10.2016    source источник


Ответы (1)


В общем, дизайн Flink не позволяет читать или записывать в состояние других подзадач тех же или разных операторов. Как вы сказали, вы можете использовать broadcast, чтобы сделать состояние глобально доступным. Функции запрашиваемого состояния предназначены для запросов внешних пользователей.

Однако я слышал о пользователях, которые использовали эту функцию в операторе для получения данных от других операторов, выполняющих ту же работу. Я не знаю, насколько хорошо это работает (стабильность и производительность). Я бы направил вас к списку рассылки пользователей для более глубокого технического обсуждения, если вы хотите попробовать это.

person Fabian Hueske    schedule 13.10.2016