Flink-SQL

本文介绍了在Flink 1.10版本中如何启动集群、SQL客户端,以及如何添加Kafka扩展包来支持Kafka数据源。在尝试使用1.13版本时遇到问题,通过回退到1.10并匹配相应Kafka插件解决了ClassCastException。详细步骤包括创建Kafka表和插入数据,并提供了查询示例。

一、简介
我这里使用的版本的是1.10.(之前试用过1.13的,结果可能是因为后面安装的Kafka插件版本和flink版本不同,导致查询出现问题)。安装这里就不说了。
1.启动flink
bin/start-cluster.sh。启动后可以看到如下进程。
在这里插入图片描述

2.启动sql-client

在这里插入图片描述

3.连接kafka需要增加扩展包(默认的只支持csv,file等文件系统)
flink-json-1.10.2.jar (https://repo1.maven.org/maven2/org/apache/flink/flink-json/1.10.2/flink-json-1.10.2.jar)
flink-sql-connector-kafka_2.11-1.10.2.jar (https://repo1.maven.org/maven2/org/apache/flink/flink-sql-connector-kafka_2.11/1.10.2/flink-sql-connector-kafka_2.11-1.10.2.jar)
将jar包flink 文件夹下的lib文件夹下
4.启动sql-client
bin/sql-client.sh embedded -1 lib/
5.创建Kafka Table

CREATE TABLE test(a int,
b int,
c int)with('connector.type' = 'kafka',
'connector.version' = 'universal',
'connector.properties.group.id' = 'g2.group1',
'connector.properties.bootstrap.servers' = '192.168.1.201:9092,192.168.1.202:9092',
'connector.properties.zookeeper.connect' = '192.168.1.201:2181',
'connector.topic' = 'customer_test',
'connector.startup-mode' = 'earliest-offset',
'format.type' = 'json');

6.插入数据

insert into test(a,b,c)
values(1,1,2),(2,10,2),(3,1,20);

在这里我一开始flink的版本是1.13和新增的kafka插件版本不对应。(我觉得是版本问题。哈哈。希望有大佬可以解决)

java.lang.ClassCastException: org.apache.calcite.sql.SqlBasicCall cannot be cast to org.apache.calcite.sql.SqlIdentifier

7.执行查询

select *  from CustomerStatusChangedEvent ;
### 下载 `flink-sql-connector-dm-cdc-2.4.0.jar` 通常可以从以下途径下载: #### Maven 仓库 如果使用 Maven 项目,可以在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>com.ververica</groupId> <artifactId>flink-sql-connector-dm-cdc-2.4.0</artifactId> <version>2.4.0</version> </dependency> ``` Maven 会自动从中央仓库下载该 JAR 文件及其依赖项。 #### 手动下载 可以直接从 Maven 中央仓库(https://mvnrepository.com/)搜索 `flink-sql-connector-dm-cdc-2.4.0`,然后选择合适的版本下载对应的 JAR 文件。 ### 使用说明 #### 环境准备 确保已经安装并配置好 Apache Flink 环境,版本要与 `flink-sql-connector-dm-cdc-2.4.0` 兼容。 #### 代码示例 以下是一个使用 `flink-sql-connector-dm-cdc-2.4.0` 的 Flink SQL 示例,用于从达梦数据库(DM)捕获变更数据: ```sql -- 创建源表,连接到达梦数据库 CREATE TABLE dm_source_table ( id INT, name STRING, age INT ) WITH ( 'connector' = 'dm-cdc', 'hostname' = 'your_hostname', 'port' = 'your_port', 'username' = 'your_username', 'password' = 'your_password', 'database-name' = 'your_database_name', 'schema-name' = 'your_schema_name', 'table-name' = 'your_table_name' ); -- 创建结果表,这里简单输出到控制台 CREATE TABLE console_sink_table ( id INT, name STRING, age INT ) WITH ( 'connector' = 'print' ); -- 从源表读取数据并写入结果表 INSERT INTO console_sink_table SELECT id, name, age FROM dm_source_table; ``` 在上述代码中,需要将 `your_hostname`、`your_port`、`your_username`、`your_password`、`your_database_name`、`your_schema_name` 和 `your_table_name` 替换为实际的达梦数据库连接信息和表名。 #### 运行作业 将上述 SQL 代码保存为一个 `.sql` 文件,然后使用 FlinkSQL CLI 或者 Java/Scala API 提交作业。 使用 SQL CLI 提交作业的命令示例: ```sh ./bin/sql-client.sh embedded -f your_sql_file.sql ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值