上篇文章我们描述了如何通过继承RichSourceFunction来实现自定义的Source。本篇中我们将继续讲述如何通过connector读取源数据,并将读取的数据存入到其他数据存储系统中,主要的思路就是Flink作为消费者来消费Kafka Topic中的数据,并将数据实时的插入到mysql/Hbase中。数据格式是模拟网站的点击日志:city,loginTime(登录时间),OS(操作系统),phoneName(手机型号),下面进入正题
一、添加Maven依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.7.2</version>
<!--编译时使用,运行时并不使用,所以本地测试需要注释掉-->
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>1.7.2</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka-0.11_2.11</artifactId>
<version>1.6.1</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
</dependencies>
二、Entity实体类
用于封装kafka中接收数据的实体,这样做的好处我们在《Flink自定义DataSource之MysqlSource》一文中解释过这样做的优势了,这里不做过多赘述
package com.xpu.kafkatomysql;
/**
* 实体类封装
* create by xiax.xpu on @Date 2019/4/13 12:14
*/
public class Entity {
public String phoneName;
public String os;
public String city;
public String logi