请问一下,flinkcdc 2.3.0版本,我想指定时间戳去获取数据,为啥不生效?这个还有其他没设置的吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
果您使用Flink CDC 2.3.0版本指定时间戳去获取数据不生效,可能有以下几个原因:
Flink CDC任务的debezium.snapshot.mode配置未设置为timestamp,导致任务无法按照时间戳获取数据。在Flink CDC 2.3.0版本中,增加了按照时间戳获取数据的功能,需要将debezium.snapshot.mode配置设置为timestamp,并通过debezium.snapshot.timestamp.mode配置指定时间戳的值。示例如下所示:
Copy
properties.setProperty("debezium.snapshot.mode", "timestamp");
properties.setProperty("debezium.snapshot.timestamp.mode", "specific");
properties.setProperty("debezium.snapshot.timestamp", "1627622400000");
在上述示例中,debezium.snapshot.mode配置设置为timestamp,表示按照时间戳获取数据。debezium.snapshot.timestamp.mode配置指定时间戳的模式,可以是system、latest、earliest或specific,这里设置为specific表示指定具体的时间戳。debezium.snapshot.timestamp配置指定时间戳的值,这里设置为2021年7月30日的时间戳。
数据库中的binlog并未包含指定时间戳的数据。如果数据库中没有包含指定时间戳的数据,那么Flink CDC任务也无法获取到相应的数据。可以通过查看数据库的binlog来确认是否包含指定时间戳的数据。
Flink CDC任务的其他配置未正确设置,例如数据库连接参数、数据源配置等。在使用Flink CDC时,需要正确设置各项配置,以确保任务能够正常运行。如果配置存在问题,可能会导致任务无法获取数据或获取到错误的数据。
从你提供的信息来看,你使用的是 Flink CDC 2.3.0 版本,并尝试指定时间戳去获取数据。然而,该功能从 Flink CDC 2.4.0 版本开始才得到支持。
在 Flink CDC 2.4.0 版本之前,无法直接在 Flink CDC 中指定时间戳获取数据。如果你需要从指定时间戳开始获取数据,可以考虑以下两种方法:
1. 使用保存点(savepoint):在 Flink 程序执行过程中,创建一个保存点,保存当前程序的状态和位置信息。然后,通过将程序回滚到保存点并重新启动来实现从指定时间戳开始获取数据的效果。
2. 自定义实现:根据你的需求,可以自己编写代码来实现从指定时间戳获取数据的逻辑。这可能涉及到与外部存储系统进行交互或使用特定的连接器来获取数据。
请注意,以上方法都不是直接在 Flink CDC 中设置时间戳来获取数据,而是通过其他手段来实现。
如果你确实需要在 Flink CDC 中直接指定时间戳获取数据,可以考虑升级到 Flink CDC 2.4.0 版本或更高版本,以获得该功能的支持。
貌似从2.4.0版本开始才支持从指定时间戳启动,但是我使用的datastream的方式,2.4.0版本也还是没有成功。从社区看是有测试成功的,不知道他们怎么测试的?
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。