Apache NiFi是由美国过国家安全局(NSA)贡献给Apache基金会的开源项目。其设计目标是自己主动化系统间的数据流。基于其工作流式的编程理念。NiFi很易于使用,强大。可靠及高可配置。

两个最重要的特性是其强大的用户界面及良好的数据回溯工具(官网吹的)

      nifi 使用起来还比較方便。基于web 的控制界面可以比較好的管理和控制数据流转。数据处理的业务流程也比較明白,以下说一下 怎样定制开发一个基于我们自身业务的组件

1.project结构

    nifi对project结构做了规范。我们仅仅要依照他的格式创创建project包 .nar,放到../lib/文件夹下,启动服务就能在页面组件中心找到并使用我们控件

    1)简单的方式是在源代码中打开一个nar 模块 ,依据我们的业务改动名称然后。。。(该怎么玩怎么玩,省去建立project模块的麻烦)

Apache Nifi 开发_数据处理

    2)就是要自己新建,那么总的来说 三步:

          a.新建maven 模块  xxxx-xxx--bundle

               pom.xml 说明依赖关系:

       Apache Nifi 开发_数据处理_02

          b. 在a模块下再新建  xxx-xxx-nar

              pom.xml 说明依赖关系

Apache Nifi 开发_功能开发_03

          c.在a模块下新建  xxx-xxx-processors

             pom.xml 说明依赖关系

 Apache Nifi 开发_功能开发_04

详细操作看看 源代码中的结构就明确了,这都不是重点 

2.开发属于自己的功能组件

   组件一般来说分为service 和processor  咱们先来说下面新建一个processor 

   总的来说分两步  1.组件功能开发,2组件声明(向外暴露)

   组件功能开发。在xxx--xxx-processors 新建project类xxxx.java

 Apache Nifi 开发_依赖关系_05

  功能组件总的来说 也分为三个部分

   a. 外界參数声明   2,输出关系声明   3,数据流触发操作

  a.外界參数说明

       假设我们的组件须要和外界做交互。须要外部传入參数那么就须要做參数声明

Apache Nifi 开发_数据处理_06

    通过这样的方式声明一个參数。nifi 自身提供了比較多的验证器 能够对參数做约束验证 大家自己看着玩

   參数定义之后须要向外部暴露,须要重写getSupportedPropertyDescriptors 方法

Apache Nifi 开发_依赖关系_07

nifi 还支持动态添加属性,方式差点儿相同。大家自己看着玩。。

2.定义转换关系

    nifi 通过转换关系对数据做流转操作。所以我们组件中必须定义至少一个转换关系

    Apache Nifi 开发_数据处理_08

     相同关系定义完毕,须要对外界暴露,就须要重写getRelationships

Apache Nifi 开发_数据处理_09


好了  到此 准备工作基本完毕 ,下来就进入主体部分,操作文件流

 3.文件流操作

    nifi 是以FlwoFile 为处理单位的,数据能够抽象理解为一个个的flowfile 这也就是数据流了

   nifi 数据处理是以重写onTriger 開始的 

   对于flowfile 的操作大致分为三中

    1.读  从数据流中读取数据内容

Apache Nifi 开发_依赖关系_10


  2.写  写入数据到flowfile中

Apache Nifi 开发_功能开发_11


3.读完写

Apache Nifi 开发_依赖关系_12

这里完毕逻辑处理之后 ,nifi 必需要将flowfile提交转换

Apache Nifi 开发_依赖关系_13


好了 这里就完毕了组件功能开发,以下对我们新开发的组件做一下声明,使其对外暴露

看好了 我仅仅来一遍

 Apache Nifi 开发_数据处理_14

好了 好了 都完毕了 打包 放到nifi 安装文件夹下的lib文件夹下 重新启动服务就好了

Apache Nifi 开发_xml_15

Apache Nifi 开发_xml_16

你看 揍死这么奇妙


        好了好了 大家自由玩耍吧 。我也是才接触这个 又不对或不到位的地方多包涵,一起交流 相互学习 共同进步。第一次写blog 话有些多了