Apache NIFI 安装 ● 操作 ● 文件同步 ● oracle 数据库增量同步实例讲解_nifi database connection url-程序员宅基地

技术标签: NIFI实例  文件同步  NIFI  数据库增量同步  数据库同步  

nifi简介
nifi背景
NiFi之前是在美国国家安全局(NSA)开发和使用了8年的一个可视化、可定制的数据集成产品。2014年NSA将其贡献给了Apache开源社区,2015年7月成功成为Apache顶级项目。

NiFi概念
Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。简单地说,NiFi是为自动化系统之间的数据流而生。 这里的数据流表示系统之间的自动化和受管理的信息流。 基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理等功能。


下载安装

1、需运行在JVM环境下,没有环境,下载安装jdk(我的jdk使用的是1.8版本,可以根据自己需要安装)

2、下载NIFI (下载.zip)

     1)下载链接:http://nifi.apache.org/download.html

           

3、解压下载的nifi-1.9.2-bin.zip到自己需要的路径

4、配置端口号(NIFI默认端口8080)

      1)在cmd中查看端口号是否被占用

            netstat -ano|findstr "8080"

       2)若被占用,到NIFI安装路径下的\conf\nifi.properties中修改端口号(安装路径即为刚才的解压路径)

           (打开文件直接搜索8080,更改保存即可,我此处更改端口号为9090)

5、启动NIFI 服务

     双击启动文件:安装路径下的\bin\run-nifi.bat

6、测试是否安装成功

      启动服务后稍等几分钟,打开浏览器访问 : http://localhost:9090/nifi/

      出现以下页面,表示安装成功

       

7.查看NIFI运行报表

      安装路径\logs\nifi-app.log


操作界面及文件同步

启动后,使用浏览器进行访问,地址:http://localhost:9090/nifi/  

    

不理解NIFI是做什么的,看一个简单的例子(同步文件夹)吧,帮助理解

  1、从工具栏中拖入一个Processor,在弹出面板中搜索GetFIle,然后确认

            

       2、配置GetFile,设置结束关系、输入目录、保留源文件,其他设置可以不动,输入目录中有文件:file.txt(内容为abc)。

             

                

  3、从工具栏中拖入一个Processor,在弹出面板中搜索PutFIle,然后确认,如第一步

  4、配置PutFile,设置结束关系、输出目录,其他设置可以不动,输出目录为空文件夹

                 

  5、将GetFIle与PutFIle关联起来,从GetFIle中心点击,拖拉到PutFIle上

                    

  6、右键启动GetFIle与PutFIle,可以看到结果,输入目录中的文件同步到,输出目录中了

    

  

  注意:操作过程中,注意错误排查

    1、Processor上的警告

      

    2、Processor上的错误

      


Oracle数据库同步

NIFI数据库增量同步用到的组件有QueryDatabaseTable、ConvertAvroToJSON,ConvertJSONToSQL、PutSQL四个组件,添加完成后的界面显示如下:

                                           

1、以表NIFINOTEST为例,表结构如下:

create table NIFINOTEST
(
  id   NUMBER not null,
  test VARCHAR2(100),
  rem  VARCHAR2(100),
  tags VARCHAR2(10)
)

2、在工具栏拖拽Processor至画布输入QueryDatabaseTable点击ADD添加组件到画布。

       

3、显示如下:

       

4、右击组件如图:

      

5、选择Configure选项选中Success显示如下:

     

6、选中PROPERTIES属性选显卡进行数据库连接池,数据库选择、数据表填写,为空字段判断,主键ID填写。

     

7、点击箭头显示如下:

     

8、点击CONTROLLER SERVICES选项卡下的 + 号输入DBCPConnectionPool显示如下:

      

9、点击ADD进入如下图,点击设置图标进行数据库连接池配置

      

     

    Database Connection URL:jdbc:oracle:thin:@你的IP:1521:你的数据库名

    Database Driver Class Name:oracle.jdbc.driver.OracleDriver

    Database Driver Location(s):file:///D:/app/Administrator/product/11.1.0/db_1/jdbc/lib/ojdbc6.jar

    此处Oracle的驱动jar加载一定要加上file:///(为3个/),jar文件我使用的是ojdbc6.jar,ojdbc4.jar插入数据会报错。

    Database User:你的数据库名称

    点击APPLY确认后显示如下:

    

     点击中间图标显示如下图,点击ENABLE启用连接池

 

     

     启用后的连接池界面显示如下:

     

10、在工具栏拖拽Processor 添加ConvertAvroToJSON组件(把数据库组件查询的数据Avro转为JSON),设置和属性配置如下

       

11、在工具栏拖拽Processor 添加ConvertJSONToSQL组件(把JSON数据转换为sql语句)设置和属性配置如下:

      

12、在工具栏拖拽Processor 添加PutSQL组件(把sql语句执行到数据库)设置和属性配置如下:

       

13、按住Shift键,鼠标选中所有组件,点击面板启动按钮启动所有组件

       

14、启动后界面如下:

       

15、操作数据源数据库新建的NIFINOTEST表插入数据后,查看目的数据库新建的NIFINOTEST表是否有了同步数据。

16、其它数据库如Mysql、SQLserver只需要在设置数据库驱动文件为对应的JAR即可,其它操作类同;我使用的数据库连接URL、数据库驱动程序类名、数据库驱动程序位置更换为对应的标示即可。我使用的驱动程序位置如下:       

       //mysql      

        Database Connection URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8

       Database Driver Class Name:com.mysql.jdbc.Driver

       Database Driver Location(s):file:///D:/apache-maven-3.3.9/WareHouse/mysql/mysql-connector-java/5.1.30/mysql-  connector-java-5.1.30.jar       


       //sqlserver       

       Database Connection URL:jdbc:jtds:sqlserver://你的IP:1433/TEST

       Database Driver Class Name:net.sourceforge.jtds.jdbc.Driver

       Database Driver Location(s):file:///D:/apache-maven-3.3.9/WareHouse/net/sourceforge/jtds/jtds/1.3.1/jtds-1.3.1.jar

17、模板学习:点此下载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_24919085/article/details/100701503

智能推荐

【深度学习】归一化_深度学习 那些情况 要做 归一化-程序员宅基地

文章浏览阅读1.8w次,点赞8次,收藏11次。​ 以前在神经网络训练中,只是对输入层数据进行归一化处理,却没有在中间层进行归一化处理。要知道,虽然我们对输入数据进行了归一化处理,但是输入数据经过 $ \sigma(WX+b) $ 这样的矩阵乘法以及非线性运算之后,其数据分布很可能被改变,而随着深度网络的多层运算之后,数据分布的变化将越来越大。如果我们能在网络的中间也进行归一化处理,是否对网络的训练起到改进作用呢?答案是肯定的。​ 这种在神经网络中间层也进行归一化处理,使训练效果更好的方法,就是批归一化Batch Normalization(BN)。_深度学习 那些情况 要做 归一化

微信小程序支付接口实现(java后台)_小程序后台java支付接口-程序员宅基地

文章浏览阅读1.2w次,点赞12次,收藏101次。#(Notice:以下所有经验也是我根据网上的经验整理的,如有侵权可以联系我删除,QQ 654303408。 有问题讨论也可联系我,QQ同上。)#(Tips:我是第一次开发,一个刚毕业的java工程师,我觉得我并非天赋异禀,我能学会,相信聪敏的你,一定可以)#(PS:目前微信拥有无可撼动的人口基数,越来越多的项目开发是基于微信小程序,或者APP。但是支付方式无非两种,一种是支付宝,一种是微信支..._小程序后台java支付接口

python web server_用Python建立最简单的web服务器-程序员宅基地

文章浏览阅读27次。第一个python Web程序——简单的Web服务器。与其它Web后端语言不同,Python语言需要自己编写Web服务器。如果你使用一些现有的框架的话,可以省略这一步;如果你使用Python CGI编程的话,也可以省略这一步;用Python建立最简单的web服务器利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:python -m Web服务..._pyjwt webserver

【图像重建指标 Metrics】均方误差RMSE及平均绝对误差MAE的定义和区别_rmse与mae有换算公式吗-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏23次。RMSE和MAE能很好的反应图像的重建结果与真实结果间的差异。_rmse与mae有换算公式吗

Kotlin Gradle Junit单元测试print输出控制台_gradle 打印日志 system. out.print-程序员宅基地

文章浏览阅读3.4k次。背景默认情况下,Gradle 单元测试,是无法使用 System.out.println 这样打印变量信息的,这会让我们debug变得非常麻烦。百度网上很多方案,,但都比较麻烦,也很容易踩坑,。换了个搜索姿势,google了下,原来方案如此简单。解决在你的模块下的build.gradle.kts添加如下的配置:tasks.withType<Test> { this.testLogging { this.showStandardStreams = true _gradle 打印日志 system. out.print

Android基本组件之服务Service_安卓如果设置组服务-程序员宅基地

文章浏览阅读167次。Service的开启与关闭1.继承Service类2.在AndroidManifest.xml中注册<service android:name=".MyService" android:enabled="true" android:exported="true"></service>直接创建Service的话,前两步会自动执行3.通过Contex.startSer..._安卓如果设置组服务

随便推点

sqlmap的使用--绕过--自带脚本tamper_sqlmap绕过脚本-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏11次。sqlmap在默认的的情况下除了使用char()函数防止出现单引号,没有对注入的数据进行修改,还可以使用–tamper参数对数据做修改来绕过waf等设备。命令格式:sqlmap -u [url] --tamper [模块名]通过使用whereis sqlmap查看sqlmap安装路径,自带的脚本一般是在usr/share/sqlmap/tamper下,我的是1.6.3版本一共有66个自带脚本下边引一些常用的脚本:apostrophemask.py适用数据库:ALL作用_sqlmap绕过脚本

换行分隔符_分隔符 换行-程序员宅基地

文章浏览阅读1.7k次。windows:\r\nlinux:\rmac:\n_分隔符 换行

waves效果器_混音选择困难2,Waves均衡器全介绍与理论使用心得-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏8次。喜欢「音乐杂谈」这个主题的朋友可以关注我的头条号,将会在不定期发表一些音乐理论以外的音乐话题的文章或者是音乐知识的干货 。(此文为混音师天职老师 发布于今日头条的原创文章,转载请告知并注明出处)通篇写作整理下来差不多花了7个小时,不管怎样,施舍点个赞吧。哈哈哈!继上一次「音乐杂谈41」混音选择困难第一期,给大家介绍了Waves全家桶的大部分压缩器之后,本篇,我们将来看看,Waves全家桶的大部分均..._waves功能详解

在Android中播放音频和视频_android 播放语言视频-程序员宅基地

文章浏览阅读2.8k次。Android媒体包提供了可管理各种媒体类型的类。这些类可提供用于执行音频和视频操作。除了基本操作之外,还可提供铃声管理、脸部识别以及音频路由控制。本文说明了音频和视频操作。本文简介媒体包提供了可管理各种媒体类型的类。这些类可提供用于执行音频和视频操作。除了基本操作之外,还可提供铃声管理、脸部识别以及音频路由控制。本文说明了音频和视频操作。范围:_android 播放语言视频

Sublime and Markdown-程序员宅基地

文章浏览阅读2.7k次。Sublime & Markdown文章目录Sublime & Markdown安装 Sublime设置 Sublime安装插件Package ControlMarkdownEditingMarkdown PreviewLiveReloadauto-saveOmniMarkupPreviewerEvernote插件&主题插入图片Ctrl+vHTML语法Markdown语法...

android uboot log,RK3288 Android 8.1系统uboot logo过渡到kernel logo会花一下-程序员宅基地

文章浏览阅读695次。在调试RK3288 Android 8.1系统遇到一个问题:开机启动uboot logo过渡到kernel log的过程中会花掉直到没有显示,再出现kernel logo。分析:打印串口log时发现,uboot阶段显示一切正常,进入kernel以后就开始花掉了然后变成没有显示了,感觉像是慢慢掉电了一样,再继续查看log发现如下打印:[ 0.363167] Registered fiq deb..._mtk 转屏后 logo uboot 转kernel 显示异常

推荐文章

热门文章

相关标签