Flink 1.10版本支持SQL DDL的特性,本文章以从kafka消费数据,写入jdbc为例介绍整个流程。具体操作如下:
1.下载flink1.10的安装包并解压:https://www.apache.org/dist/flink/flink-1.10.0/flink-1.10.0-bin-scala_2.11.tgz 进入flink的lib目录,采用wget或是本地下载拷贝的方式下载依赖的connector ,需要的依赖有
flink-json-1.10.0.jar,flink-sql-connector-kafka_2.11-1.10.0.jar,
flink-jdbc_2.11-1.10.0.jar, mysql-connector-java-5.1.48.jar
2.执行./bin/start-cluster.sh启动flink集群,启动成功后可以在 http://localhost:8081 访问到 Flink Web UI。
3.执行./bin/sql-client.sh embedded 启动 SQL CLI。便会看到松鼠欢迎的界面,
4.使用DDL建立数据源表
CREATE TABLE source_table (
id BIGINT,
name STRING,
score BIGINT
) WITH (
'connector.type' = 'kafka', 使用kafka connector
'connector.version' = 'universal', kafka版本,universal支持0.11以上的版本
'connector.topic' = 'flink-ddl-test', topic
'connector.properties.zookeeper.connect' = 'localhost:2181', zookeeper地址
'connector.properties.bootstrap.servers' = 'localhost:6667', broker service的地址
'format.type' = 'json' 数据格式
);
- 建立数据sink表
create table sink_table(
id BIGINT,
name String,
score BIGINT
) WITH (
'connector.type' = 'jdbc', 使用jdbc connector
'connector.url' = 'jdbc:mysql://localhost/test', jdbc url
'connector.table' = 'my_test', 数据表名
'connector.username' = 'root', 用户名
'connector.password' = '123456', 密码
'connector.write.flush.max-rows' = '1' 处理数据记录数,默认5000条
);
6.执行insert语句,提交flink任务
insert into sink_table select id,name,score from source_table;
- 在flink的web ui界面上可以看到提交的任务,可以消费kafka中的数据,并写入jdbc。
来源:51CTO
作者:wx5c4fe9e4a762f
链接:https://blog.51cto.com/14191021/2481464