flink sql 初体验

167 阅读1分钟

做一个简单的demo,从kafka队列中流失读取数据,计算后输出到mysql表中。

部署环境

java 1.8

flink

kafka

mariadb

采用单机部署模式。

安装

下载flink和kafka后分别解压

运行

准备kafka数据源

启动zookeeper

nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

启动kafka

nohup bin/kafka-server-start.sh config/server.properties &

创建kafka topic,并手工输入数据

bin/kafka-topics.sh --create --zookeeper localhost:2181  --topic user_behavior --partitions 1 --replication-factor 1
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic user_behavior

输入如下数据,可以多输入几条。这跟之后要建立的flink表是对应的。注意TIMESTAMP类型格式需要是yyyy-mm-dd hh:mm:ss[.fffffffff]

1,1,1,behavior1,2020-11-02 09:00:00

准备mysql

建立对应的表和授权,表需要有主键。

create database flink;

use flink;

create table flink_output(id bigint ,pv bigint,PRIMARY KEY (ID));

CREATE USER 'flink'@'%' IDENTIFIED BY 'flink';

GRANT all ON flink.flink_output TO 'flink'@'%';

kafka sink目前不能支持group后的输出,所以采用mysql作为输出。

运行flink

启动flink 本地集群

bin/start-cluster.sh

运行 sql client

需要对应的connector。这里需要kafka和mysql。下载如下三个文件,放到flink的新建libs目录下。

flink-connector-jdbc_2.11-1.11.2.jar
flink-sql-connector-kafka_2.11-1.11.2.jar
mysql-connector-java-5.1.49.jar

下载地址:

ci.apache.org/projects/fl…

ci.apache.org/projects/fl…

启动sql client,需要带上附加jar包的目录;

bin/sql-client.sh embedded -l libs/

在flink里建立对应的表并提交sql。

CREATE TABLE kafkaTable (
 user_id BIGINT,
 item_id BIGINT,
 category_id BIGINT,
 behavior STRING,
 ts TIMESTAMP(3)
) WITH (
 'connector' = 'kafka',
 'topic' = 'user_behavior',
 'properties.bootstrap.servers' = 'localhost:9092',
 'properties.group.id' = 'testGroup',
 'format' = 'csv',
 'scan.startup.mode' = 'earliest-offset'
);
CREATE TABLE flink_output (
  id BIGINT,
  pv bigint,
  PRIMARY KEY (id) NOT ENFORCED
) WITH (
   'connector' = 'jdbc',
   'url' = 'jdbc:mysql://localhost:3306/flink',
   'table-name' = 'flink_output',
   'username' = 'flink',
   'password' = 'flink'
);

insert into flink_output select user_id,count(1) from kafkaTable group by user_id;

可以在网页查看作业详情

http://172.17.0.3:8081

参考

JDBC SQL Connector: ci.apache.org/projects/fl…

原文链接:www.luozhucheng.com