Как добавить uid к оператору в Flink Table API?

Как настоятельно рекомендуется в документации, я хочу добавить uid к своим операторам во Flink с целью сохранения. Моя работа использует API таблиц. Я не нашел в документации, как добавлять uid к операторам с SQL-запросом.

Мой код выглядит примерно так:

StreamExecutionEnvironment env = ...;
StreamTableEnvironment tEnv = TableEnvironment.getTableEnvironment(env);
Table table = tEnv.sqlQuery("SELECT * FROM mytable GROUP BY TUMBLE(col1, INTERVAL '10' SECOND));
tEnv.writeToSink(table, someSink, qConfig);

Если я правильно понимаю, TUMBLE Window - это внутреннее состояние оператора. Поэтому я хочу назначить ему конкретный uid, чтобы предотвратить некоторые проблемы, которые могут возникнуть из-за автогенерированного идентификатора. Как правильно это сделать?

Я использую Flink v1.6.2


person Stevenyc091    schedule 01.04.2019    source источник


Ответы (1)


Table API не позволяет вам устанавливать uid для операторов. Проблема в том, что запросы SQL могут привести к различным планам выполнения, если их скомпилировать с другой версией. Поэтому установка uid не поможет, если ваш план полностью изменится. На данный момент фактически невозможно обеспечить обратную совместимость для SQL-запросов.

person Till Rohrmann    schedule 02.04.2019
comment
есть ли еще автоматически сгенерированный идентификатор? Пример использования: у меня есть запрос с 1-часовым TUMBLE. Я отменяю задание с помощью точки сохранения через 30 минут. Предполагая, что я не менял ни запрос, ни версии Flink (т.е. план запроса тот же), через 5 минут я снова запускаю задание, передавая путь к точке сохранения. Будет ли состояние, загруженное из точки сохранения, включать в себя уже прошедшие 30 минут TUMBLE? Или состояние из запросов SQL полностью исключено из точки сохранения как часть внутреннего устройства Flink? - person Stevenyc091; 03.04.2019