开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

在使用flinkcdc 从消费位点重新消费的时候 有没有遇到这种反序列化的问题呀 ?

在使用flinkcdc 从消费位点重新消费的时候 有没有遇到这种反序列化的问题呀 ?io.debezium.debeziumexception: Failed to deserialize data of EventHeaderV4{timestamp=1699412467000, eventType=EXT_UPDATE_ROWS, serverId=1753307, headerLength=19, dataLength=461, nextPosition=48147733, flags=0}No TableMapEventData has been found for table id:2919. Usually that means that you have started reading binary log 'within the logical event group' (e.g. from WRITE_ROWS and not proceeding TABLE_MAP

展开
收起
真的很搞笑 2023-11-16 07:53:59 122 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    是的,在使用Flink CDC重新消费数据变更事件时可能会遇到反序列化的问题。这是因为Flink CDC使用Debezium作为其底层组件之一,而Debezium在处理MySQL的二进制日志时有一些特殊的要求。
    在MySQL的二进制日志中,每一条数据变更事件都是由一系列的子事件组成的,包括TABLE_MAPWRITE_ROWSUPDATE_ROWS等。其中,TABLE_MAP子事件用来描述当前表的结构信息,而WRITE_ROWSUPDATE_ROWS等子事件则用来记录数据的实际变化情况。
    当Flink CDC重新消费数据变更事件时,它首先需要解析出TABLE_MAP子事件,然后才能正确地解析出后续的子事件。因此,如果你在Flink CDC的任务日志中看到“No TableMapEventData has been found for table id:”这样的错误信息,那说明Flink CDC没有找到对应的TABLE_MAP子事件,因此无法正确地解析出后续的数据变更事件。
    为了解决这个问题,你可以尝试以下几种方法:

    1. 确保Flink CDC的任务是从正确的二进制日志位置开始消费的。如果你的任务是从错误的位置开始消费的,那么很可能会出现反序列化失败的问题。
    2. 确保MySQL的二进制日志没有被清理掉。如果你的MySQL服务器已经清理掉了部分二进制日志文件,那么Flink CDC就无法正确地找到对应的TABLE_MAP子事件了。
    3. 确保你的Flink CDC任务有足够的内存资源。在处理大量的数据变更事件时,Flink CDC需要消耗较多的内存资源。因此,如果你的任务出现了反序列化失败的问题,那么可能是由于内存不足导致的。
    2023-11-16 13:49:15
    赞同 1 展开评论 打赏
  • 在使用Flink CDC从消费位点重新消费时,可能会遇到反序列化问题。这个问题通常是由于在逻辑事件组中读取二进制日志(例如从WRITE_ROWS而不是TABLE_MAP开始)导致的。为了解决这个问题,你可以尝试以下方法:

    1. 确保你的Flink CDC版本与Debezium版本兼容。你可以查看官方文档以获取有关兼容性的信息。

    2. 检查你的Flink CDC配置,确保它正确地指向了MySQL的binlog文件。你可以通过设置connector.class属性为io.debezium.connector.mysql.MySqlConnector来实现这一点。

    3. 在Flink SQL中,使用DESCRIBE TABLE语句来查看表的结构,确保表名和字段名与你在MySQL中定义的一致。

    4. 如果问题仍然存在,你可以尝试使用其他工具或技术来处理二进制日志,例如使用mysqlbinlog命令行工具。

    2023-11-16 10:29:20
    赞同 展开评论 打赏
  • 待修复,此回答整理自钉群“Flink CDC 社区”

    2023-11-16 08:36:00
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载