flink cdc 启动 ./sql-client.sh embedded 异常

本文讲述了如何解决Flink 1.11.2中启动sql-client.sh时遇到的KafkaTableSourceSinkFactoryBase缺失问题,涉及下载补丁、删除旧包和重新加载的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天起动flink ./sql-client.sh 异常如下


./sql-client.sh embedded
No default environment specified.
Searching for '/data/flink-1.11.2/conf/sql-client-defaults.yaml'...found.
Reading default environment from: file:/data/flink-1.11.2/conf/sql-client-defaults.yaml
No session environment specified.


Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an issue.
        at org.apache.flink.table.client.SqlClient.main(SqlClient.java:213)
Caused by: org.apache.flink.table.client.gateway.SqlExecutionException: Could not create execution context.
        at org.apache.flink.table.client.gateway.local.ExecutionContext$Builder.build(ExecutionContext.java:870)
        at org.apache.flink.table.client.gateway.local.LocalExecutor.openSession(LocalExecutor.java:227)
        at org.apache.flink.table.client.SqlClient.start(SqlClient.java:108)
        at org.apache.flink.table.client.SqlClient.main(SqlClient.java:201)
Caused by: java.lang.NoClassDefFoundError: org/apache/flink/streaming/connectors/kafka/KafkaTableSourceSinkFactoryBase
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)


无脑百度半小时才找到一位大佬的解决办法,我自己也记下笔记
2、去如下地址下载

https://nightlies.apache.org/flink/flink-docs-release-1.11/dev/table/connectors/kafka.html

3、截图如下,下载好
在这里插入图片描述
4、删掉原来目录下kafka包

# 进入到目录(你自己安装的flink) flink/lib/ 
rm -rf flink-connector-kafka_2.12-1.11.2.jar

在这里插入图片描述
5、上传下载好的包到 flink/lib
6、启动成功
在这里插入图片描述

### 配置和使用 Flink CDC 3.0 与 RDS 数据源 #### 关于 Flink CDC 版本演进 Flink CDC 的发展经历了多个版本,在早期版本中,为了确保数据的一致性,默认情况下会采用全局锁机制来处理变更数据捕获过程中的事务隔离问题[^1]。然而这种做法可能会带来性能上的瓶颈以及潜在的应用hang住风险。随着技术的进步,Flink CDC 2.0引入了新的设计思路,特别是针对MySQL这类关系型数据库的支持进行了优化改进[^2]。 对于最新版即Flink CDC 3.0而言,其进一步增强了对多种主流云服务提供商所托管的关系型数据库(如AWS RDS)的支持能力,并且通过一系列技术创新实现了更高效稳定的数据同步体验。 #### 如何配置 Flink CDC 3.0 和 AWS RDS MySQL 实例连接 要实现这一目标,需遵循如下指南: - **环境准备** - 确认已安装并配置好 Apache Flink 环境。 - 下载适用于特定版本的 `flink-sql-connector` JAR 文件,可以从官方GitHub仓库获取对应版本资源文件[^3]。 - **创建 Debezium Connector JSON 配置** ```json { "name": "rds-mysql-source", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "database.hostname": "<your-rds-endpoint>", "database.port": "3306", "database.user": "<db-user>", "database.password": "<db-password>", "database.server.id": "184054", "database.include.list": "<target-database-name>", "table.whitelist": "<schema>.<tablename>", "database.history.kafka.bootstrap.servers": "localhost:9092", "database.history.kafka.topic": "history-topic" } } ``` 请注意替换 `<...>` 占位符为实际参数值。 - **启动 Flink SQL Client 并加载必要的依赖库** ```bash ./bin/sql-client.sh embedded -j /path/to/flink-sql-connector-flink-cdc-x.x.x.jar ``` 这里 `/path/to/` 应指向下载好的JAR包路径;而 `-j` 参数用于指定外部插件的位置。 - **定义输入表结构并通过 DDL 创建逻辑视图** ```sql CREATE TABLE rds_mysql_table ( id BIGINT, name STRING, age INT, ts TIMESTAMP(3), WATERMARK FOR ts AS ts - INTERVAL '5' SECOND ) WITH ( 'connector' = 'mysql-cdc', 'hostname' = '<your-rds-endpoint>', 'port' = '3306', 'username' = '<db-user>', 'password' = '<db-password>', 'database-name' = '<target-database-name>', 'table-name' = '<schema>.<tablename>' ); ``` 以上SQL语句展示了如何基于之前设置好的Debezium connector配置信息构建一个名为 `rds_mysql_table` 的虚拟表格对象,它可以直接参与到后续ETL流程当中去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值