全部產品
Search
文件中心

Realtime Compute for Apache Flink:FirstRow Merge Engine

更新時間:Aug 11, 2026

本文介紹合并引擎(Merge Engine )中的FirstRow Merge Engine用法。

FirstRow Merge Engine說明

  • 合并策略

    對於每個主鍵,僅保留第一條記錄 ,後續相同主鍵的記錄將被忽略。

  • 配置方式

    在建立表時,通過設定表屬性'table.merge-engine' = 'first_row'來啟用。

  • 變更日誌特性

    • 產生僅插入(insert-only)的變更日誌。

    • 允許下遊 Flink 作業將主鍵表視為僅追加(append-only)的日誌表。

  • 適用情境

    • 適用於無需回撤或變更日誌的下遊操作,例如視窗彙總(Window Aggregation),間隔串連(Interval Join)等情境。

    • 在流式計算中,可用於日誌去重 ,顯著降低處理複雜性並提升效率。

  • 使用限制

    • 不支援UPDATE和DELETE操作。

    • 不支援部分更新。

    • 變更日誌中的UPDATE_BEFORE和DELETE事件將被自動忽略。

使用樣本

-- 建立表T,設定主鍵k,並啟用FirstRow Merge Engine
CREATE TABLE T (
    k  INT,
    v1 DOUBLE,
    v2 STRING,
    PRIMARY KEY (k) NOT ENFORCED
) WITH (
    'table.merge-engine' = 'first_row'
);

-- 插入兩條主鍵相同的記錄 
INSERT INTO T VALUES (1, 2.0, 't1');
INSERT INTO T VALUES (1, 3.0, 't2');

-- 查詢主鍵為 1 的記錄,僅返回第一條記錄
SELECT * FROM T WHERE k = 1;

 -- 輸出結果
-- +---+-----+------+
-- | k | v1  | v2   |
-- +---+-----+------+
-- | 1 | 2.0 | t1   |
-- +---+-----+------+