【调研】FlinkSql功能测试及实战演练

本文档详细介绍了FlinkSQL在Kafka和JDBC上的功能测试,包括常规功能和upsert模式的测试。测试涵盖创建表、数据写入、更新与删除操作,发现FlinkSQL对Kafka支持良好,但删除操作需通过逻辑实现。此外,FlinkSQL暂时不支持JDBC连接Impala。
摘要由CSDN通过智能技术生成

FlinkSql功能测试及实战演练

前言:Flink在国内的占有率逐步提升的情况下,各项组件的功能与稳定性也得到逐步提升。为了解决目前已有的复杂需求,尝试研究flinksql的特性与功能,作为是否引入该组件的依据。同时尝试将现有需求通过简单demo的形式进行测试。本次测试主要集中在Kafka、mysql、Impala三个组件上,同时将结合官方文档进行:

https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/

1 前期准备

1.1 环境配置

本次研究测试需要用到以下组件:

CDH 6.3.2
Flink 1.12.2
mysql 5.7
impala 3.2.0-cdh6.3.2
kafka 2.2.1-cdh6.3.2

1.2 依赖关系

本次测试会将FlinkSql与kafka、mysql、impala等组件进行conn,因此需要以下依赖包:

flink-connector-kafka_2.11-1.12.2.jar
flink-connector-jdbc_2.11-1.11.2.jar
mysql-connector-java-5.1.47.jar
ImpalaJDBC4.jar
ImpalaJDBC41.jar
flink-sql-connector-kafka_2.11-1.12.2.jar

1.3 重启flink

将上述所需的jar包放入$FLINK_HOME/lib中之后(所有部署flink的服务器都需要放),重启yarn-session

yarn-session.sh --detached
sql-client.sh embedded

2 FlinkSql-kafka测试

FlinkSql-kafka相关资料:

https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/dev/table/connectors/kafka.html

2.1 FlinkSql-kafka常规功能测试

通过FlinkSql将Kafka中的数据映射成一张表

2.1.1 创建常规topic
1、创建topic
kafka-topics  --create --zookeeper 192.168.5.185:2181,192.168.5.165:2181,192.168.5.187:2181 --replication-factor 3 --partitions 3 --topic test01

2、模拟消费者
kafka-console-consumer  --bootstrap-server 192.168.5.185:9092,192.168.5.165:9092,192.168.5.187:9092 --topic test01 --from-beginning

3、模拟生产者
kafka-console-producer  --broker-list 192.168.5.185:9092,192.168.5.165:9092,192.168.5.187:9092 --topic test01

4、删除topic
kafka-topics --delete --topic test01 --zookeeper 192.168.5.185:2181,192.168.5.165:2181,192.168.5.187:2181
2.1.2 FlinkSql建表
CREATE TABLE t1 (
    name string,
    age BIGINT,
    isStu INT,
    opt STRING,
    optDate TIMESTAMP(3) METADATA FROM 'timestamp'
) WITH (
    'connector' = 'kafka',  -- 使用 kafka connector
    'topic' = 'test01',  -- kafka topic
    'scan.startup.mode' = 'earliest-offset',
    'properties.bootstrap.servers' = '192.168.5.185:9092,192.168.5.165:9092,192.168.5.187:9092',  -- kafka broker 地址
    'format' = 'csv'  -- 数据源格式为 csv,
);
select * from t1;
2.1.3 写入数据

往kafka中写入数据,同时查看flinksql中t1表的变化

zhangsan,20,1,1
lisi,18,1,2
wangwu,30,2,2

在这里插入图片描述
在这里插入图片描述

2.1.4 小结

通过kafka数据映射成表这个步骤,可以将数据实时的汇入表中,通过sql再进行后续操作,相对代码编写来说更为简易,同时有问题也相对好排查

2.2 FlinkSql-upsertKafka常规功能测试

upsert-kafka 连接器生产 changelog 流,其中每条数据记录代表一个更新或删除事件。

如果有key则update,没有key则insert,如果value的值为空,则表示删除

2.2.1 FlinkSql建upsert表
drop table t2;
CREATE TABLE t2 (
  name STRING,
  age bigint,
  isStu INT,
  opt STRING,
  optDate TIMESTAMP(3) ,
  PRIMARY KEY (name) NOT ENFORCED
) WITH (
  'connector' = 'upsert-kafka',
  'topic&#
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值