nifi之读取mysql数据库(离线同步)

效果

要求时间较紧,两天呢要完成,自己对这个nifi又是第一次接触,非常的不易,这个效果图是一个综合的效果,不是本篇文档的效果图,
注意,nifi非常的强大,后期我们主要利用它近50个平台的数据收集


nifi


选择处理器

QueryDatabaseTable:来读取数据库信息

生成SQL选择查询,或使用提供的语句

创建组

组的主要作用就是,把处理器进行分组
因为咱这个是最后的目标是从mysql数据库里面读取数据然后再放到mysql数据中,来进行的一个模拟的操作动作,所以我的组名就叫mysql_to_mysql,这个名称大家可以自己根据实际情况而改动

nifi之读取mysql数据库离线提取(1)_jar


nifi之读取mysql数据库离线提取(1)_jar_02

新建处理器

nifi之读取mysql数据库离线提取(1)_nifi_03


nifi之读取mysql数据库离线提取(1)_jar_04

修改处理器名称

主要是为了方便一眼可以看出来这个处理器是干什么的

【双击处理器】

nifi之读取mysql数据库离线提取(1)_mysql_05

更改处理器属性

创建一个连接池

nifi之读取mysql数据库离线提取(1)_mysql_06


nifi之读取mysql数据库离线提取(1)_数据库_07

配置连接池

nifi之读取mysql数据库离线提取(1)_nifi_08


nifi之读取mysql数据库离线提取(1)_数据库_09


nifi之读取mysql数据库离线提取(1)_数据库_10

输入mysql的url的java驱动地址

nifi之读取mysql数据库离线提取(1)_nifi_11

nifi之读取mysql数据库离线提取(1)_nifi_12


nifi之读取mysql数据库离线提取(1)_数据库_13

上传jar包

nifi之读取mysql数据库离线提取(1)_jar_14

jar包添加权限
[root@localhost jars]# ls
mysql-connector-java-8.0.26.jar
[root@localhost jars]# chmod +rwx mysql-connector-java-8.0.26.jar 
[root@localhost jars]# ls
mysql-connector-java-8.0.26.jar

nifi之读取mysql数据库离线提取(1)_nifi_15

配置属性的账号密码

nifi之读取mysql数据库离线提取(1)_mysql_16

启动连接池

nifi之读取mysql数据库离线提取(1)_数据库_17


nifi之读取mysql数据库离线提取(1)_nifi_18


nifi之读取mysql数据库离线提取(1)_jar_19


nifi之读取mysql数据库离线提取(1)_数据库_20


nifi之读取mysql数据库离线提取(1)_mysql_21

nifi之读取mysql数据库离线提取(1)_nifi_22

配置QueryDatabaseTable处理的属性

上面的连接池已经配置好了,只是说可以正常的连接数据库了,我们需要配置这个处理器,让可以从数据库里面提取数据

配置RunSchedule时间

这个时间就是这个处理器多长时间进行一次操作数据库,默认是0,如果是0的话,可以说是不停的查询数据库,这样对服务器的负担太大了,所以在这里我们把它改成9999sec,基本就是这个处理启动之后就会执行一次,对于测试来说已经足够了,这个可以根据实际需求情况,自己来设定时间。

nifi之读取mysql数据库离线提取(1)_mysql_23

选择数据库类型

nifi之读取mysql数据库离线提取(1)_nifi_24

添加表名

在创建连接池的时候有个数据库的url,里面就指定了数据库的名称,所以这边只要填写表名即可

nifi之读取mysql数据库离线提取(1)_jar_25

填写查询语句

这个一般有两种方法查询

第一种

如果要查询select * from tables where id =5 limit 1:这个语句的话,这个limit 1就没有办法实现

nifi之读取mysql数据库离线提取(1)_数据库_26


第二种

我们这里用第二种方法

nifi之读取mysql数据库离线提取(1)_mysql_27

确认一下sql语句是否可以执行

我这个里面少提取了一个name字段,我自己加上了,大家要注意一下.

nifi之读取mysql数据库离线提取(1)_nifi_28


填写配置

nifi之读取mysql数据库离线提取(1)_nifi_29


这个是增加了name字段的,大家可以根据实际情况考虑加或者不加,如果后期数据处理需要这个字段就加上

nifi之读取mysql数据库离线提取(1)_nifi_30

该处理器就配置好了

nifi之读取mysql数据库离线提取(1)_mysql_31

发现报错信息

这个是因为处理器没有上下游的原因,我们需要给他创建一个下游

由于我们从数据库里面提取出来的数据是avro格式,所以我们需要转化为json格式来方便我们的阅读

创建ConvertAvroToJson处理器

小编这里处理器选错了哈,在下篇小编会改正过来,大家可以按照这个处理器进行,这个处理也就起到了一个下游的作用

nifi之读取mysql数据库离线提取(1)_jar_32

更改下处理器的name

nifi之读取mysql数据库离线提取(1)_nifi_33

连接两个处理器

nifi之读取mysql数据库离线提取(1)_nifi_34


nifi之读取mysql数据库离线提取(1)_jar_35

启动QueryDatabaseTable,查看数据库操作情况

注意:只有处理器上面没有任何的错误信息显示的时候,才能开启处理器,否则开始按钮是灰色的

nifi之读取mysql数据库离线提取(1)_mysql_36


nifi之读取mysql数据库离线提取(1)_jar_37

出现报错

其实这个错误看着像是java驱动出现了问题,但是这里的原因是连接不上数据库呢
所以要注意以下几点




nifi之读取mysql数据库离线提取(1)_jar_38

更改mysql的url地址

nifi之读取mysql数据库离线提取(1)_mysql_39


nifi之读取mysql数据库离线提取(1)_数据库_40


nifi之读取mysql数据库离线提取(1)_jar_41

启动处理器

可以发现有一条消息已经进入

nifi之读取mysql数据库离线提取(1)_数据库_42

查看信息

nifi之读取mysql数据库离线提取(1)_mysql_43


nifi之读取mysql数据库离线提取(1)_jar_44


nifi之读取mysql数据库离线提取(1)_jar_45

可以看到我们已经成功的在nifi上面获取到了信息,这不过都是乱码,为什么呢,是因为导出来的数据库信息是avro格式的,所以我们后面又加了一个处理器,可以转json格式的处理器,由于时间问题,转json处理器,下篇小编再继续

nifi之读取mysql数据库离线提取(1)_jar_46