Flink SQL ジョブでパターン認識の属性を変更すると、ジョブと既存の状態データとの間の互換性が損なわれます。
仕組み
Realtime Compute for Apache Flink は、MATCH_RECOGNIZE 句を通じてパターン認識を実装します。これは内部で複雑なイベント処理 (CEP) を使用します。CEP エンジンは、パターン定義から有限状態機械を構築し、処理中のイベントシーケンスをその状態機械の構造に紐づけられた状態データとして保存します。
CEP の状態データは、実行中の状態機械のスナップショットであり、それを生成したパターンと密接に結合しています。パターンが変更されると、新しい状態機械は異なる構造を持つため、既存の状態データはもはやそれにマッピングできなくなります。その結果、Flink はパターンの変更をまたいで CEP 演算子の状態を移行することができません。
状態の互換性を損なう属性
パターン認識の SQL ステートメントで以下のいずれかの属性を変更すると、ジョブは既存の状態データと互換性がなくなります。
| 属性 | パターン認識における役割 |
|---|---|
pattern | マッチさせるイベントシーケンスを定義します |
measures | マッチから抽出される出力列を定義します |
after | 次のマッチの開始位置を制御します |
PARTITION BY | キーごとの独立したマッチングのために、入力ストリームをパーティション分割します |
ORDER BY | イベントが評価される順序を定義します |