Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:Jointure

Dernière mise à jour :Aug 09, 2026

Cette rubrique indique si un job reste compatible avec ses données d'état après la modification d'une requête de type Regular Join, Interval Join, Temporal Join ou Lookup Join.

Regular Join

Une Regular Join conserve indéfiniment les deux flux d'entrée dans l'état. L'état de son opérateur ne peut pas être migré entre différentes versions du job.

Modifications incompatibles

Les modifications suivantes rendent le job incompatible avec ses données d'état :

Modification

Effet

Changement du type de jointure

Incompatible

Changement de la condition de jointure

Incompatible

Changement du schéma d'entrée

Incompatible

Exception compatible

Si vous modifiez des conditions d'égalité ou d'inégalité et que cette modification peut être propagée vers un flux d'entrée pour générer un nœud Calc avec des conditions, ajoutez table.optimizer.state-compatibility.ignore-filter: true à la section Parameters. Le job reste entièrement compatible avec les données d'état.

Interval Join

Une Interval Join limite l'état selon la fenêtre d'intervalle, ce qui permet à Flink de supprimer les anciennes valeurs une fois l'intervalle écoulé. L'état de son opérateur ne peut pas être migré entre différentes versions du job.

Modifications incompatibles

Les modifications suivantes rendent le job incompatible avec ses données d'état :

Modification

Effet

Changement du type de jointure

Incompatible

Changement de la condition de jointure

Incompatible

Changement de l'intervalle

Incompatible

Changement du schéma d'entrée

Incompatible

Modifications compatibles

Les modifications suivantes maintiennent la compatibilité totale du job avec ses données d'état :

Modification

Condition

Changement de l'unité de temps

La valeur finale de l'intervalle doit rester identique. Par exemple, passer de INTERVAL '60' SECOND à INTERVAL '1' MINUTE est compatible.

Changement des conditions d'égalité ou d'inégalité

La modification doit pouvoir être propagée vers un flux d'entrée pour générer un nœud Calc avec des conditions, et vous devez ajouter table.optimizer.state-compatibility.ignore-filter: true à la section Parameters.

Temporal Join

Une Temporal Join met en corrélation un flux avec une table versionnée à un instant précis. L'état de son opérateur ne peut pas être migré entre différentes versions du job.

Modifications incompatibles

Les modifications suivantes rendent le job incompatible avec ses données d'état :

Modification

Effet

Changement du type de jointure

Incompatible

Changement de la condition de jointure

Incompatible

Changement du schéma d'entrée

Incompatible

Lookup Join

Par défaut, une Lookup Join s'exécute comme un opérateur sans état. La modification d'une Lookup Join n'affecte pas la compatibilité d'état de son propre opérateur. Toutefois, si vous changez la sortie d'une Lookup Join, la compatibilité d'état des opérateurs en aval peut être impactée.

Cas où une Lookup Join devient stateful

Une Lookup Join s'exécute comme un opérateur avec état dans l'un des cas suivants :

  • L'option table.optimizer.non-deterministic-update.strategy: TRY_RESOLVE est configurée pour le job et le système détecte des mises à jour non déterministes provenant de la Lookup Join.

  • La recherche asynchrone (asynchronous lookup) est configurée pour la Lookup Join.

Avertissement

Lorsqu'une Lookup Join s'exécute comme un opérateur avec état, le système peut ne pas détecter les problèmes de compatibilité et signaler à tort que les modifications sont totalement compatibles. Dans ce cas, le job ne parvient pas à démarrer car les données d'état ne peuvent pas être récupérées.