最近稍微研究了下etl工具nifi,它是Apache下面的一个项目,是用作数据流处理的,具体的就不多做介绍了,网上也有很多介绍,官网是https://nifi.apache.org/docs.html,我在这里做了一个从中移物联网onenet平台抽取数据到mysql的功能,没有做数据过滤以及中文转码乱码的情况处理,这2个地方还不清楚怎么做,如果会的同学也帮忙指导我一下,我们接下来看看整个的设计过程。
首先我们在官网上面下载nifi,我这里使用的版本是1.9.2,解压nifi后,我们就可以进入该文件夹下面的bin目录,点击run-nifi.bat启动nifi,可能nifi启动毕竟慢的原因,我关闭后重新启动一两次才能打开nifi的网页,默认端口是8080,可以在conf文件夹下面的nifi.properties修改端口号nifi.web.http.port。
进入到nifi主页后,我们可以看到如下图片
我们选择第一个图标,按住鼠标拖动该图标到空白页即可,显示出如下图片
在搜索框里面输入GetHttp,然后双击它就可以了,然后在空白页就会出现
双击或者右键点击configure选项,我们可以在settings->name下自定义名称,我们这里主要介绍下properties页签下的配置,其他的页签配置可以参考官网介绍,在properties页签下我们首先得定义从哪里取数据即url属性,在配置url属性之前我们可以可以在nifi配置一个公共的url地址属性,在空白处右键点击鼠标可以出现如下所示的内容
选择variables属性,进入后如下所示
添加如上所示的属性,现在回到GetHttp的properties页签上,在url属性上输入以下值
filename属性就是以后的flowfile名称,同时定义一个自定义属性api-key,用于参数的传递,接下来需要注意的是必须定义一个SSL Context Service,点击该属性的value值,如果没有定义过该属性值,需要我们自己新创建一个SSL Context Service,如下所示
点击create new service后进入如下界面
根据情况选择其中一个即可,通过SSL Context Service最右边的箭头符号进入到创建好的value值后,我们可以在properties页签中定义keystore和truststore2种方式的加密方式,我这里选择了keystore的方式,可以参考https://www.cnblogs.com/aiaitie/p/9525564.html这个文章或者百度下keystore查询,生成后的引用方式
设置正确后,可以看到有个“雷电”符号,点击它表示启用就可以完成该SSL Context Service的应用了,因为从onenet接收过来的数据是
{ "errno" : 0, "data" : { "private" : true, "protocol" : "DTU", "create_time" : "2019-07-16 10:25:48", "act_time" : "2019-07-16 17:02:09", "online" : true, "id" : "设备id", "auth_info" : "设备编号", "last_ct" : "2019-07-30 08:27:27", "datastreams" : [ { "create_time" : "2019-07-16 17:02:11", "uuid" : "ae14d1f5-b789-4ea7-a894-a13b447283bd", "id" : "xxx" }, ], "title" : "设备名称", "desc" : "power monitor device" }, "error" : "succ" }
我们需要将数据进行json平展,所以引入了FlattenJson Processor进行json数据平展,如下所示
默认情况下分隔符是“.”,平展后的数据是
{ "errno" : 0, "data.private" : true, "data.protocol" : "DTU", "data.create_time" : "2019-07-16 10:25:48", "data.act_time" : "2019-07-16 17:02:09", "data.online" : true, "data.id" : "设备id", "data.auth_info" : "设备编号", "data.last_ct" : "2019-07-30 08:27:27", "data.datastreams" : [ { "create_time" : "2019-07-16 17:02:11", "uuid" : "ae14d1f5-b789-4ea7-a894-a13b447283bd", "id" : "xxx" }], "data.title" : "鍙板彉2", "data.desc" : "power monitor device", "error" : "succ" }
因为在mysql是不能使用“.”来数据插入操作的,而nifi是根据这些字段值进行数据对比和传值的,因此还需要把“.”替换为“_”来进行操作,因此我们还需要引入replaceText processor来进行替换操作,如下所示
替换完成后接下来我们就可以将json转换为sql进行插入操作了,这个时候我们使用ConvertJSONToSQL processor进行数据的转换,在properties页签中我们需要定义JDBC Connection pool,点击value值,如果没有则新增一个,进入到JDBC Connection pool中,在DBCPConnectionPool的properties页签中我们定义需要的的相关属性,如下所示
这里需要注意了,因为nifi没有导入mysql的相关jar包,需要我们自己去引入,把我们需要的mysql jar包放入到lib文件夹下面即可,就可以正常的进行使用了,配置好以后同样通过“雷电”符号进行启用配置,当然如果只有ConvertJSONToSQL processor还是不能把数据写入到mysql数据库中的,我们还要引用putsql processor才行,配置如下
整体上我们的nifi配置如下所示
数据库结果如下:
这里还有个奇怪的是做update操作的时候,它会将data_id字段修改为DATAID的sql语句,如下所示
UPDATE device SET data_title = ?, data_desc = ? WHERE DATAID = ?
也不是很清楚这个出现的原因,会的同学麻烦指导下。
相关推荐
基于nifi将mysql数据导入clickhouse。 给出了基于http与JDBC两种方式
8、NIFI综合应用场景-NiFi监控MySQL binlog进行实时同步到hive 网址:https://blog.csdn.net/chenwewi520feng/article/details/130620988 本文旨在介绍通过实时监控mysql的binlog实现数据的实时同步至hive中。但由于...
使用大数据处理工具NIFI,进行数据从Postgresql中导入到MySql中,实现数据的同步处理,处理的时候,是带有分页的,因为作者正在做相关的项目,而,用nifi同步数据好说,如何,进行数据的分页同步不好弄,这里,主要是,采用...
本文是在6、NIFI综合应用场景-离线同步Mysql数据到HDFS中基础上完成的,仅仅是将上文中的json数据转成txt文件。本文仅列出了和该示例增加的部分,其他的则没有变化。 本文前置条件是mysql、hadoop、nifi、hive和hue...
本文旨在介绍nifi与kafka的交互过程,即生产数据到kafka中,然后通过nifi消费kafka中的数据。 本文前提是nifi、kafka环境正常。 本文分为三个部分,即处理器说明、生产数据到kafka中以及消费kafka中的数据。
这里面编写了一个NIFI大数据传输流程,使用phoenix从hbase中去获取数据,带分页获取数据以后,然后把数据同步到指定的mysql数据库中去,实现数据的实时同步. 下载以后配置一下对应的数据库连接池,以及数据库的用户名...
2.下载以后导入nifi,然后直接点击启动就可以实现数据的同步了,可以直接同步一整张表,数据库连接池已经配置好了,笔者自己测试过用了.. 3.可以配置需要同步的表,然后需要同步的目的地的表就可以了.
mysql历史数据同步到clickhouse 已测试
项目中需要的整理出来给需要的宝子们,实现了在大数据场景中,实时同步指定MySql数据源的数据,实时同步到Sql...最后启动所有流程,Nifi就会根据流程自动从mysql数据库中读取数据,读取数据有把数据同步到SqlServer中去
NIFI1.21.0_Mysql和Postgresql到MysqlHbase_...是一个nifi的模板,实现了从mysql以及postgresql中同时读取数据,读取的时候支持,指定数据库和数据表进行同步,数据全量同步,可以同时同步到mysql数据库以及hbase数据库中.
使用了NIFI1.21.0最新版,2023-06-20作者在这个时间做好的,这个大数据处理流程,已经实现了,增量mysql的cdc数据读取以后,在插入到目标mysql数据库的时候,如果碰到主键一样的id,就自动变成更新数据,如果在更新的时候...
如果你也需要利用NIFI进行数据同步,并且你用到了Postgresql数据库,想从Postgresql数据库中去获取数据然后,把数据同步到Hbase中去,这里我们使用的大数据存储工具,Hbase来存储原始数据. 我们需要把所有的关系型数据,...
6、NIFI应用场景-离线同步Mysql数据到HDFS中 网址:https://blog.csdn.net/chenwewi520feng/article/details/130619480 本文旨在说明将mysql数据同步至HDFS中,并进行验证。阅读本文前最好是阅读本系列的前面文章...
Apache NiFi 是一个易于使用、功能强大而且可靠的数据拉取、数据处理和分发系统,用于自动化管理系统间的数据流。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。NiFi原来...
使用NIFI将数据实时同步到PostGresql中. 下载以后配置自己的mysql数据库连接池,包括连接地址,用户名密码 配置postgresql的数据库连接池,包括连接地址,以及用户名密码 然后启动流程进行数据实时同步
花了作者好多时间,这个NIFI不得不说还是挺好用的,可以...MySql的Binlog打开以后,然后直接把下载的模板导入到自己的nifi中去,然后配置好自己要同步的数据库和表,配置好数据库连接信息,就可以了启动实时同步了,太酷了...
上面的资源我弄了一个星期,终于实现了,把数据从postgresql数据库可以动态的,实时,读取postgresql的cdc数据然后根据cdc的内容,进行数据增量的同步到mysql数据库中去,而且还添加了,cdc数据的分页功能,如果cdc数据内容...
Apache NIFI 安装 ● 操作 ● 文件同步 ● oracle 数据库增量同步实例讲解(https://blog.csdn.net/qq_24919085/article/details/100701503) apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。...
5、NiFi FileFlow示例和NIFI模板示例 网址:https://blog.csdn.net/chenwewi520feng/article/details/130614514 本文旨在介绍FlowFile属性和内容、模板和简单介绍一个应用示例。其中模板将是后续文章的主要使用内容...
NiFi管理员或数据流管理器(DFM)可能会发现,在单个服务器上使用NiFi的一个实例不足以处理它们拥有的数据量。 所以,一个解决方案是在多个NiFi服务器上运行相同的数据流。 但是,这会产生管理问题,因为每次DFM想要...