Memodifikasi atribut pengenalan pola dalam pekerjaan Flink SQL akan memutus kompatibilitas antara pekerjaan tersebut dan data state-nya yang sudah ada.
Cara kerja
Realtime Compute for Apache Flink mengimplementasikan pengenalan pola melalui klausa MATCH_RECOGNIZE, yang secara internal menggunakan Pemrosesan Peristiwa Kompleks (Complex Event Processing/CEP). Mesin CEP membangun mesin keadaan hingga (finite state machine) berdasarkan definisi pola dan menyimpan urutan event yang sedang diproses sebagai data state yang terikat pada struktur mesin keadaan tersebut.
Data state CEP merupakan snapshot dari mesin keadaan yang sedang berjalan dan sangat bergantung pada pola yang menghasilkannya. Jika pola diubah, mesin keadaan baru akan memiliki struktur yang berbeda sehingga data state yang telah ada tidak lagi sesuai. Akibatnya, Flink tidak dapat memigrasikan state operator CEP ketika terjadi perubahan pola.
Atribut yang memutus kompatibilitas state
Modifikasi salah satu atribut berikut dalam pernyataan SQL pengenalan pola akan membuat pekerjaan tidak kompatibel dengan data state-nya yang sudah ada:
| Attribute | Peran dalam pengenalan pola |
|---|---|
pattern | Menentukan urutan event yang akan dicocokkan |
measures | Menentukan kolom output yang diekstraksi dari suatu match |
after | Mengontrol posisi awal pencocokan berikutnya |
PARTITION BY | Mempartisi aliran input untuk pencocokan independen per kunci |
ORDER BY | Menentukan urutan evaluasi event |