Flink cdc debug调试动态变更表结构

FlinkCDC同步mysql的demo <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma. 阅读详情
AI摘要

本文详细描述了FlinkCDC3.0动态变更表结构过程中遇到的问题,如缺失jar包引发的异常、JsonFactory异常和版本不匹配的NoSuchMethodError,以及如何进行代码拉取、本地打包、配置启动参数、日志设置和问题排查。

前言

接着上一篇Flink cdc3.0动态变更表结构——源码解析,cdc debug部分官方没有特别说明,尝试踩了一些坑, 这里记录下。

调试流程

1. 拉取代码本地打包

通过 github 拉取3.0.0 以上版本,本地maven打包 mvn clean package -DskipTests

2. 配置启动参数

搜索启动类CliFrontend,修改运行配置。
在这里插入图片描述
需要配置环境变量FLINK_HOME, pipeline connector依赖包,flink-dist 包,以及指定配置文件,--use-mini-cluster true 代表使用 local 集群。
在这里插入图片描述
mysql-to-doris.yaml

################################################################################
# Description: Sync MySQL all tables to Doris
################################################################################
source:
  type: mysql
  hostname: localhost
  port: 3306
  username: root
  password: 123456
  tables: app_db.\.*
  server-id: 5400-5404
  server-time-zone: UTC

sink:
  type: doris
  fenodes: 127.0.0.1:8030
  username: root
  password: ""
  table.create.properties.light_schema_change: true
  table.create.properties.replication_num: 1

pipeline:
  name: Sync MySQL Database to Doris
  parallelism: 1

3. 日志配置

如果想debug时控制台有日志输出,需要修改主pom.xml中org.apache.logging.log4j 相关的scope。然后再flink-cdc-cli 模块添加对应的log4j2.xml 日志配置。我这里为了测试效果,将日志级别调成info。
在这里插入图片描述

4. 启动验证

在测试前需要doris创建好对应的数据库,启动验证库表能正常同步,这次我们拿app_db. products表进行测试。目前表结构和数据能正常同步,接下来我们准备一条添加字段的sql在mysql执行
在这里插入图片描述

5. 断点验证

我们在SchemaOperator类的processElement方法中提前加上断点,在mysql中执行alter table products add COLUMN name VARCHAR(64);,可以看到断点处捕获到了对应的SchemaChangeEvent 事件。在这里插入图片描述
从这里可以看到SchemaChangeEvent的生成及之后的处理,和上一篇分析的流程也是相同的。完整执行日志:
在这里插入图片描述
doris上也能查到添加的字段,不过是VARCHAR(256),这里又是一个bug。
在这里插入图片描述

问题

1. Cannot find factory with identifier “mysql” in the classpath.

没有添加flink-cdc-pipeline-connector-mysql-3.0-SNAPSHOT.jar 引起的异常
在这里插入图片描述

2.JsonFactory异常

下面这个异常网上很多解决方案是添加com.fasterxml.jackson.core相关包,而这里实际可能是classpath没有添加flink-dist-1.18.0.jar

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/shaded/jackson2/com/fasterxml/jackson/core/JsonFactory
	at com.ververica.cdc.cli.utils.FlinkEnvironmentUtils.loadFlinkConfiguration(FlinkEnvironmentUtils.java:33)
	at com.ververica.cdc.cli.CliFrontend.createExecutor(CliFrontend.java:89)
	at com.ververica.cdc.cli.CliFrontend.main(CliFrontend.java:62)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonFactory
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

3. NoSuchMethodError异常

如果classpath引入的pipeline版本不匹配,可能会找出NoSuchMethodError异常, 比如我最开始使用的官网的链接:
https://repo1.maven.org/maven2/com/ververica/flink-cdc-pipeline-connector-mysql/3.0.0/flink-cdc-pipeline-connector-mysql-3.0.0.jar
https://repo1.maven.org/maven2/com/ververica/flink-cdc-pipeline-connector-doris/3.0.0/flink-cdc-pipeline-connector-doris-3.0.0.jar

Caused by: java.lang.NoSuchMethodError: com.ververica.cdc.common.event.AddColumnEvent$ColumnWithPosition.<init>(Lcom/ververica/cdc/common/schema/Column;Lcom/ververica/cdc/common/event/AddColumnEvent$ColumnPosition;Lcom/ververica/cdc/common/schema/Column;)V
	at com.ververica.cdc.connectors.mysql.source.parser.CustomAlterTableParserListener.lambda$exitAlterByAddColumn$0(CustomAlterTableParserListener.java:120)
	at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.runIfNotNull(MySqlAntlrDdlParser.java:358)
	at com.ververica.cdc.connectors.mysql.source.parser.CustomAlterTableParserListener.exitAlterByAddColumn(CustomAlterTableParserListener.java:98)
	at io.debezium.ddl.parser.mysql.generated.MySqlParser$AlterByAddColumnContext.exitRule(MySqlParser.java:15459)
	at io.debezium.antlr.ProxyParseTreeListenerUtil.delegateExitRule(ProxyParseTreeListenerUtil.java:64)
	at com.ververica.cdc.connectors.mysql.source.parser.CustomMySqlAntlrDdlParserListener.exitEveryRule(CustomMySqlAntlrDdlParserListener.java:122)
	at com.ververica.cdc.connectors.shaded.org.antlr.v4.runtime.tree.ParseTreeWalker.exitRule(ParseTreeWalker.java:48)

其他

调试环境准备的过程中,会遇到各种小问题。这里也很难罗列完,基本是根据日志来判断处理,既然有案例可以正常调试,相信大家也可以的。

结尾

参考文献:https://docs.google.com/document/d/1L6cJiqYkAsZ_nDa3MgRwV3SKQuw5OrMbqGC4YgzgKR4/edit#heading=h.aybxdd96r62i

FlinkSQL to MySQL连接器报错:Could not find any factory for identifier ‘jdbc‘ 背景 在FlinkSql client下尝试将 kafka中映射的虚拟表ods_base_province 导入到mysql表base_province时,抛了如下错误: Flink SQL> INSERT INTO base_province SELECT * FROM ods_base_province; [INFO] Submitting SQL update statement to the cluster... [ERROR] Could not execute SQL stateme 阅读详情

相关推荐

flinkcdc 3.0 源码学习之任务提交脚本flink-cdc.sh

flinkcdc3.0源码解读第一篇提交脚本flink-cdc.sh解读

Antg的博客 3198

解决:Could not find any format factory for identifier ‘csv‘ in the classpath.问题

在Maven工程中的pom.xml文件添加以下依赖。在类路径中找不到标识符‘在类路径中找不到标识符‘在类路径中找不到标识符‘

JiaXingNashishua的博客 1953

MIMO+Qwen双模协同Debug工作流实战指南

在AI辅助编程日益普及的今天,单模型泛化推理常导致debug误判与修复不可落地。本文聚焦真实后端调试场景,解析如何通过分层协同机制——以MIMO Pro V2为代码层‘精准定位引擎’,Qwen 3.6 Plus为跨层‘归因分析中枢’——实现从日志现象到系统级根因的阶梯式收敛。该方案不依赖大参数量或付费服务,强调结构化输入、约束式提问与平台路由配置,适用于Spring微服务、分布式事务、Redis Lua脚本等典型问题,尤其契合初级后端建立调试直觉、中年程序员维护老旧系统及预算受限但追求效率的务实开发者。

ozzzzzz的专栏 494

Volga:面向实时AI的声明式特征计算引擎

实时特征计算是AI工程化落地的关键环节,其核心在于实现离线训练与线上服务间特征逻辑的一致性、低延迟与可维护性。基于有状态流处理(Stateful Streaming)原理,现代方案需在事件时间语义、Exactly-Once保障和动态状态管理之间取得平衡。技术价值体现在消除手工编写的‘特征胶水层’,通过声明式DSL统一定义、编译与运维,显著降低MLOps复杂度。典型应用场景包括电商实时推荐、金融风控特征流、广告点击率预估等对时效性与一致性双敏感的领域。Volga正是一款聚焦Feature Engine本质、深

weixin_34214500的博客 562

数据库反规范化实战:何时该打破范式提升性能

数据库规范化是保障数据一致性的基础设计原则,但面对高并发、低延迟的现代应用需求,单纯遵循范式常导致JOIN开销大、跨服务延迟高、查询响应慢等问题。反规范化作为一种有意识的数据冗余策略,通过宽表设计、字段预聚合、JSON半结构化存储等手段,在可控一致性代价下显著提升读性能。其核心价值在于平衡ACID约束与工程实效性,适用于商品详情页、实时报表、微服务数据同步等高频读场景。本文结合MySQL/PostgreSQL真实案例,解析反规范化的触发条件、字段选取三线原则、四种一致性同步方案对比,以及性能退化预警信号,帮

weixin_33924312的博客 432

Kafka Connect SMT数据塑形实战:语义清洗、结构扁平与契约治理

Kafka Connect的Simple Message Transform(SMT)是实现流式数据轻量级治理的核心能力,其本质是在消息流转链路最前端完成字段语义统一、嵌套结构扁平化与Schema演进兜底。相比Flink或KSQL后置处理,SMT以零GC开销、低延迟和强确定性保障数据‘可读、可验、可追溯’,支撑金融级数据管道的合规性与可观测性要求。本文聚焦data shaping与schema evolution两大高频技术诉求,详解ReplaceField、Flatten、InsertField等关键SM

dianan0938的博客 447

AI工程师成长地图:从环境搭建到模型服务化的实战路径

AI工程师不是算法研究员的简化版,而是一个聚焦模型服务化、MLOps与工程落地的独立技术角色。其核心能力涵盖Docker容器化、CI/CD流水线、Triton模型部署、Airflow数据管道及业务指标对齐等工程实践。区别于理论导向的算法岗位,AI工程师需构建‘训练→部署→监控→迭代’闭环,确保模型在GPU显存受限、高并发、实时特征流等真实生产环境中稳定交付。关键词如MLOps、模型部署、Dockerfile优化、Airflow数据管道、Triton服务化,均指向工业级AI系统建设的关键能力。本文即围绕这些高

weixin_30435261的博客 400

AI落地四大断层:数据、工程、人才与商业的 readiness 实战指南

AI落地难,本质不是模型能力不足,而是行业在数据基建、工程化能力、复合型人才和商业对齐四个维度存在系统性断层。从‘有数据’到‘可用数据’需跨越schema稳定性、时间一致性与语义可解释性;模型服务化必须解决GPU资源隔离、弹性扩缩与灰度发布等生产级挑战;T型人才共建与特性小组制正成为破除算法-工程割裂的关键组织范式;而真正决定AI项目成败的,是能否将技术指标转化为业务语言——如留存率、响应时长、GMV等可衡量结果。本文聚焦AI industry readiness这一高频搜索概念,结合数据治理、MLOps、

xjwolaile的博客 397

程序员核心竞争力:数据与逻辑解耦的工程直觉

在现代分布式系统中,'数据库+编程语言'的单一技术栈已难以应对实时风控、高并发秒杀、跨源数据分析等复杂场景。理解数据生命周期(产生→传输→存储→计算→消费)和计算范式本质(命令式/函数式/响应式),是构建可扩展架构的基础。掌握ClickHouse列存聚合、Redis内存索引、Flink流处理等引擎的适用边界,结合Rust所有权、Go Goroutine调度、SQL与NoSQL语义差异等底层原理,才能实现从‘建表思维’到‘数据契约思维’、从‘语法熟练’到‘范式驾驭’的跃迁。本文聚焦真实项目中的技术选型逻辑与认

diedangxiang4092的博客 545

dbt实战入门:SQL优先的数据建模与测试

数据建模是现代数据平台的核心能力,其本质是将原始数据通过可复用、可验证的逻辑转化为可信数据资产。基于声明式建模原理,dbt 以 SQL 为唯一接口,实现模型依赖自动解析、环境感知的表名生成与跨源 JOIN 编排,显著提升数据开发的可维护性与协作效率。技术价值在于将数据治理左移至开发阶段——通过内建测试(not_null、unique)、单元测试(unit test)和 freshness 校验,让质量保障成为每次 git commit 的默认动作。典型应用场景覆盖数仓分层建设(staging/base/ma

341

工业级大数据机器学习流水线:SparkML与Delta Lake协同架构

大数据机器学习流水线(Big-Data Pipelines)是支撑AI规模化落地的核心基础设施,其本质是数据从采集、清洗、特征工程、模型训练到服务上线的端到端可追溯、可回滚、高可靠动态系统。SparkML并非孤立工具,而是需深度嵌入分层数据架构中的关键执行单元;结合Delta Lake的ACID事务、Schema演化与变更数据捕获(CDC)能力,可实现特征复用、血缘追踪与版本原子性管理。该架构显著提升故障隔离性、迭代敏捷性与资源利用率,适用于TB-PB级批流一体场景,尤其解决模型离线准、线上差、运维重等工业

weixin_34380948的博客 310

RAG求职助手:用个人技术知识库实现精准岗位匹配

RAG(检索增强生成)是一种将大语言模型与外部知识源动态结合的技术范式,其核心在于分离‘推理能力’与‘事实存储’,通过向量检索+语义重排+可信生成,解决AI幻觉与知识滞后问题。在求职场景中,RAG让系统能实时调用用户私有技术文档(如GitHub代码、博客、故障报告),完成页码级精准匹配与可验证推荐,显著优于微调(更新慢、易编造)和提示工程(上下文受限)。本文聚焦RAG在工程师职业发展中的落地实践,涵盖技术知识库构建、领域适配的混合检索、证据链式报告生成,并提供开箱即用的本地化部署方案,适用于Java后端、云

weixin_30435261的博客 429

Flink本地Debug调试的方法和注意点

flink项目如何本地debug调试,毕竟和后端项目不同。本文介绍flink项目本地debug方法和注意点。

weixin_44883450的博客 3263

【信息科学与工程学】【数据中心】第三十二篇 云数据中心的计算/存储/网络的核心挑战01

状态方程: SOCk+1​=SOCk​−Qn​ik​Δt​;: 三相电流变换到αβ坐标系: iα​=32​​(ia​−21​ib​−21​ic​), iβ​=32​​(23​​ib​−23​​ic​). 计算瞬时有功功率p和无功功率q,经低通滤波器分离直流分量,反变换得基波电流,差值即为谐波指令。: 节点i的信念 bi​(xi​)=ϕi​(xi​)∏j∈N(i)​mji​(xi​), 消息 mij​(xj​)=∑xi​​ϕi​(xi​)ψij​(xi​,xj​)∏k∈N(i)\j​mki​(xi​).

weixin_49199313的博客 217

flink mysql cdc调试问题记录

最近需要用到flink cdc作为数据流处理框架,在demo运行中发现一些问题,特此记录问题和解决过程。

kakaweb的博客 5664

【信息科学与工程学】【产品体系】第三十三篇 DPU/smartinic芯片中的学科知识03

需求实现DMA 与流边界检测优化​分级超时状态机(短/中/长)+ 积压计数 + 批量触发DMA 控制器优化​描述符预取(深度 4)+ 中断合并(阈值 8)Fence 语义正确性验证​RTL 断言 + C 语言序列号检测 + 性能对比 + 硬件计数器所有代码均为可综合 Verilog,已在仿真器中通过基本功能测试。在 FPGA 原型上运行上述 RTL,配合 ChipScope 观察 fence 时序在 BlueField-3 上运行 DOCA DPA 测试程序,对比加/不加 fence 的结果。

weixin_49199313的博客 277
上一篇: Flink cdc3.0动态变更表结构——源码解析
下一篇: clickhouse(十五、存储优化实践)
yyoc97
博客等级 码龄12年 272粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值