Paimon的merge-engine配置
Paimon 的 merge-engine 是处理主键表中具有相同主键记录合并策略的重要配置项。以下是各种 merge engine 模式的总结:
- Deduplicate(默认)
● 行为:保留最新的记录,丢弃其他具有相同主键的记录
● DELETE 记录处理:如果最新记录是 DELETE,则删除所有相同主键的记录
● 配置选项:可通过 ignore-delete 忽略 DELETE 记录 - Partial Update(部分更新)
● 行为:允许多次更新同一记录的不同列,直到记录完整
● 特点:不覆盖 null 值;必须与 [lookup] 或 full-compaction changelog producer 配合使用
● DELETE 处理:默认不接受 DELETE 记录,可通过 ignore-delete 或 sequence-group 解决
Sequence Group 机制
● 用于解决多流更新时的数据乱序问题
● 每个流可定义自己的序列组
● 支持为字段指定聚合函数 - Aggregation(聚合)
● 行为:根据指定的聚合函数对相同主键的记录进行聚合
● 默认聚合函数:last_non_null_value
● 支持的聚合函数:
○ last_value, last_non_null_value, first_value, first_non_null_value
○ listagg, bool_and, bool_or, nested_update, merge_map
● 要求:流式查询需配合 [lookup] 或 full-compaction changelog producer 使用 - First Row(首行)
● 行为:保留相同主键的第一条记录
● 特点:只生成插入类型的变更日志
● 限制:
○ 不能指定 sequence.field
○ 不接受 [DELETE]和 [UPDATE_BEFORE]
○ 可通过 ignore-delete 忽略这些消息
