すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:結合

最終更新日:Jan 08, 2025

このトピックでは、ジョブの regular join、interval join、temporal join、または lookup join クエリを変更した後に、ジョブとそのジョブの開始に使用される状態データ間の互換性について説明します。

Regular join

regular join に関連する演算子の状態データは移行できません。ジョブの regular join の属性 (結合タイプ、結合条件、入力スキーマなど) を変更すると、ジョブは状態データとの互換性がなくなります。ただし、等式または不等式条件を変更し、その変更を結合クエリの入力ストリームにプッシュダウンして条件を持つ Calc ノードを生成できる場合は、[パラメーター] セクションで table.optimizer.state-compatibility.ignore-filter: true 構成を指定することで、ジョブと状態データの完全な互換性を維持できます。

Interval join

interval join に関連する演算子の状態データは移行できません。ジョブの interval join の属性 (結合タイプ、結合条件、間隔、入力スキーマなど) を変更すると、ジョブは状態データとの互換性がなくなります。次の変更を行った場合、ジョブは状態データと完全な互換性を維持します。

  • 間隔の最終値に影響を与えずに時間単位を変更します。

  • 等式または不等式条件を変更し、その変更を結合クエリの入力ストリームにプッシュダウンして条件を持つ Calc ノードを生成し、[パラメーター] セクションで table.optimizer.state-compatibility.ignore-filter: true 構成を指定します。

Temporal join

temporal join に関連する演算子の状態データは移行できません。ジョブの temporal join の属性 (結合タイプ、結合条件、入力スキーマなど) を変更すると、ジョブは状態データとの互換性がなくなります。

Lookup join

デフォルトでは、lookup join はステートレス演算子によって実行されます。 lookup join を変更しても、対応する演算子の状態の互換性には影響しません。ただし、lookup join の出力が変更された場合、ダウンストリーム演算子の状態の互換性に影響する可能性があります。さらに、次の条件が満たされる場合、lookup join はステートフル演算子によって実行され、互換性の問題が発生する可能性があります。この場合、システムは問題を検出できず、変更が完全に互換性があると誤って表示する可能性があります。その結果、状態データを回復できないため、ジョブの開始時にエラーが発生します。

  • ジョブに対して table.optimizer.non-deterministic-update.strategy: TRY_RESOLVE 構成を指定し、システムが lookup join から非決定的な更新を検出します。

  • lookup join に対して非同期ルックアップを構成します。