哪位大佬知道Flink CDC忽略delete那个参数?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云实时计算 Flink 版中,Flink CDC 忽略 DELETE 操作的参数主要通过 ignoreDelete 或类似功能的参数实现。以下是具体说明和配置方法:
ignoreDelete 参数ignoreDelete 是一个布尔类型的参数,用于控制是否忽略 DELETE 类型的消息。
- 取值: - true:忽略 DELETE 消息。 - false(默认值):不忽略 DELETE 消息。
适用场景:
DELETE 操作,可以将该参数设置为 true。DELETE 操作可以避免数据结果不正确的问题。示例:
CREATE TABLE sink_table (
...
) WITH (
'connector' = '...',
'ignoreDelete' = 'true'
);
partial-update.ignore-delete 参数在部分更新(Partial Update)场景下,partial-update.ignore-delete 参数也可以用来忽略 DELETE 消息。
- 适用版本: - 在实时计算引擎 VVR 8.0.6 及以下版本,该参数仅在 merge-engine = partial-update 时生效。 - 在 VVR 8.0.7 及以上版本,推荐使用统一的 ignore-delete 参数,并避免同时配置这两个参数。
CREATE TABLE sink_table (
...
) WITH (
'connector' = '...',
'partial-update.ignore-delete' = 'true'
);
sink.delete-strategy 参数对于某些连接器(如 Paimon、Elasticsearch 等),可以通过 sink.delete-strategy 参数指定删除消息的处理策略。
- 取值: - IGNORE_DELETE:忽略 -U 和 -D 类型的消息,Sink 不发生回撤。 - NON_PK_FIELD_TO_NULL:忽略 -U 类型的消息,但在收到 -D 类型的消息时,保持主键值不变,其他非主键字段置为 NULL。 - DELETE_ROW_ON_PK:忽略 -U 类型的消息,但在收到 -D 类型的消息时,删除主键对应的行。 - CHANGELOG_STANDARD:按照 Flink SQL Changelog 的工作原理运行,不忽略删除操作。
CREATE TABLE sink_table (
...
) WITH (
'connector' = '...',
'sink.delete-strategy' = 'IGNORE_DELETE'
);
在 ClickHouse 结果表中,ignoreDelete 参数的默认值为 true,即默认忽略 DELETE 消息。
- 注意事项: - 如果设置 ignoreDelete=false,则需要确保 DDL 中声明了主键,否则无法支持以分区方式写入 ClickHouse 分布表的本地表。
CREATE TABLE sink_table (
...
) WITH (
'connector' = 'clickhouse',
'ignoreDelete' = 'false'
);
在使用 Paimon 主键表时,可以通过 SQL Hint 设置 ignore-delete 参数来过滤 DELETE 消息。
- 示例:
INSERT INTO paimon_table /*+ OPTIONS('ignore-delete'='true') */
SELECT * FROM source_table;
DELETE 操作,某些存储系统(如 ClickHouse)可能会使用低效的 ALTER TABLE DELETE 语句,导致性能显著下降。DELETE 操作可能会影响数据一致性,请根据实际业务需求决定是否启用该参数。通过上述配置,您可以灵活地控制 Flink CDC 是否忽略 DELETE 操作,从而满足不同的业务需求。