Flink实时数仓项目—业务数据采集
前言
前面完成了日志数据的采集,下面进行业务数据的采集。
一、采集工具选型
实时数仓相关采集工具的选型在这篇文章中有提到:Flink实时数仓各种CDC对比
二、Flink-CDC学习
业务数据采集选取了Flink-CDC,Flink-CDC的学习及使用在这里:Flink-CDC 2.0学习及使用
三、MySQL数据准备
前提条件:业务数据存放在MySQL中,首先要在MySQL中创建名为gmall2022
的数据库,然后执行相关sql文件导入建表语句。
1.binlog的配置
修改/etc/my.cnf文件,内容如下:
server-id = 1
log-bin=mysql-bin
binlog_format=row
binlog-do-db=gmall2022
这里开启了gmall2022
这个数据库的binlog,并且格式为row。
配置完成后,重启MySQL使配置生效: sudo systemctl restart mysqld
可以在/var/lib/mysql目录下查看binlog文件:
2.模拟生成数据
业务数据是用户真实的下单数据等等,所以也是无法拿到的,所以也使用脚本模拟生成真实的数据。
1)先将对应生成数据的脚本上传到/opt/module/gmall-flink/rt_db 目录下
2)修改application.properties中数据库连接信息,内容如下:
logging.level.root=info
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://hadoop102:3306/gmall-flink-2022?characterEncoding=utf-8& useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root spring.datasource.password=000000
logging.pattern.console=%m%n
mybatis-plus.global-config.db-config.field-strategy=not_null #业务日期
mock.date=2021-03-06
#是否重置
mock.clear=1
#是否重置用户
mock.clear.user=0
… …
3)运行jar包:java -jar gmall2020-mock-db-2020-11-27.jar
再次到/var/lib/mysql目录下,可以看到index文件发生了改变。
四、业务数据采集模块
在IDEA中新建模块gmall2021-realtime,创建如下的包结构:
目录 | 作用 |
---|---|
app | 处理各层数据的Flink程序 |
bean | 数据对象 |
common | 公共常量 |
utils | 工具类 |
1.配置文件
在pom.xml中导入以下依赖:
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<flink.version>1.13.0</flink.version>
<scala.version>2.12</scala.version>
<hadoop.version>3.1.3</hadoop.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java&l