Topik ini menjelaskan cara menggunakan FirstRow Merge Engine.
Deskripsi FirstRow Merge Engine
Merge policy
Untuk setiap primary key, hanya catatan pertama yang dipertahankan; catatan berikutnya dengan primary key yang sama akan dibuang.
Konfigurasi
Anda dapat mengaktifkan engine ini dengan menyetel properti tabel
'table.merge-engine' = 'first_row'saat membuat tabel.Atribut Changelog
Menghasilkan changelog hanya-insert (insert-only).
Memungkinkan pekerjaan Flink downstream memperlakukan tabel primary key sebagai tabel log append-only.
Skenario
Cocok untuk operasi downstream yang tidak memerlukan retraksi atau changelog, seperti window aggregation dan interval join.
Dalam pemrosesan aliran, engine ini dapat digunakan untuk menghapus duplikat dari log, sehingga mengurangi kompleksitas pemrosesan dan meningkatkan efisiensi.
Batasan
Tidak mendukung operasi UPDATE atau DELETE.
Tidak mendukung partial updates.
Event UPDATE_BEFORE dan DELETE dalam changelog secara otomatis diabaikan.
Contoh
-- Buat tabel T, tetapkan primary key ke k, dan aktifkan FirstRow Merge Engine.
CREATE TABLE T (
k INT,
v1 DOUBLE,
v2 STRING,
PRIMARY KEY (k) NOT ENFORCED
) WITH (
'table.merge-engine' = 'first_row'
);
-- Masukkan dua catatan dengan primary key yang sama.
INSERT INTO T VALUES (1, 2.0, 't1');
INSERT INTO T VALUES (1, 3.0, 't2');
-- Kueri catatan dengan primary key bernilai 1. Hanya catatan pertama yang dikembalikan.
SELECT * FROM T WHERE k = 1;
-- Output
-- +---+-----+------+
-- | k | v1 | v2 |
-- +---+-----+------+
-- | 1 | 2.0 | t1 |
-- +---+-----+------+