本文介绍合并引擎(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 |
-- +---+-----+------+
该文章对您有帮助吗?