Apache Nifi 开发

时间:2023-03-09 15:39:54
Apache Nifi 开发

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

两个最重要的特性是其强大的用户界面及良好的数据回溯工具(官网吹的)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 开发

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

pom.xml 说明依赖关系

Apache Nifi 开发Apache Nifi 开发

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

pom.xml 说明依赖关系

Apache Nifi 开发 Apache Nifi 开发

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

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

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

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

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

Apache Nifi 开发Apache Nifi 开发

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

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

a.外界參数说明

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

Apache Nifi 开发Apache Nifi 开发

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

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

Apache Nifi 开发Apache Nifi 开发

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

Apache Nifi 开发

2.定义转换关系

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

Apache Nifi 开发Apache Nifi 开发

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

Apache Nifi 开发

Apache Nifi 开发

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

3.文件流操作

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

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

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

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

Apache Nifi 开发

Apache Nifi 开发

2.写  写入数据到flowfile中

Apache Nifi 开发Apache Nifi 开发

3.读完写

Apache Nifi 开发Apache Nifi 开发

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

Apache Nifi 开发

Apache Nifi 开发

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

看好了 我仅仅来一遍

Apache Nifi 开发

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

Apache Nifi 开发Apache Nifi 开发

Apache Nifi 开发

你看 揍死这么奇妙

Apache Nifi 开发

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