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

#apache-flink #flink-sql

#apache-flink #flink-sql

Вопрос:

Как настоятельно рекомендуется в документации, я хочу добавить uid к своим операторам в Flink с целью сохранения. Моя работа использует Table 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);
  

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

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

Ответ №1:

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

Комментарии:

1. есть ли еще автоматически сгенерированный идентификатор? Пример использования: у меня есть запрос с ОШИБКОЙ в 1 час. Я отменяю задание с точкой сохранения через 30 минут. Предполагая, что я не изменил запрос и не изменил версии Flink (т. Е. План запроса тот же), через 5 минут я снова запускаю задание, передавая путь к точке сохранения. Будет ли состояние, загруженное из точки сохранения, включать в себя уже прошедшие 30 минут ПАДЕНИЯ? Или состояние из SQL-запросов полностью исключено из точки сохранения как часть внутренних компонентов Flink?