为了能够创建一个高效的NiFi数据数据流程,我们需要了解有哪些Processor类型可以使用。每个新的NiFi版本Processor数量都会增加,当前NiFi版本为1.12.1,内置了288个类型的Proccessor,这些Processor提供从多个不同系统接收数据、路由、转换、处理、拆分和聚合数据以及将数据分发到多个系统的功能。
按照功能分类:
1. procesor 分类说明
1.1 数据摄取
-
GetFile: 此“Processor”监控本地磁盘或者网络连接磁盘中的文件文件夹,读取文件内容封装为一个FlowFile,文件的属性将会转化为FlowFile的属性。默认情况下源文件会被删除(也可选择保留)。会忽略没有读取权限的文件。
-
GetFTP: 下载FtpServer上的文件,读取文件内容创建FlowFile。读取完成后原始文件会被删除。此processor的目的是移动文件,而不是复制文件。
-
GetSFTP: 下载SFtpServer上的文件,读取文件内容创建FlowFile。读取完成后原始文件会被删除。此processor的目的是移动文件,而不是复制文件。
-
GetJMSQueue: 由ActiveMQ JMS消息队列读取一条消息,并更具消息内容创建FlowFile。可以选择是否将JMS属性复制为FlowFile的属性。
-
GetJMSTopic: 由ActiveMQ JMS消息队列的topic读取一条消息,并更具消息内容创建FlowFile。可以选择是否将JMS属性复制为FlowFile的属性。支持持久订阅和非持久订阅。
-
GetHTTP: 又一个http或者https地址下载内容并创建FlowFile加载到NiFi。这个Processor会记录ETag和Last-Modified Date,以避免重复的获取数据。
-
ListenHTTP: 启动一个http server,监听连接。任何Post Request的content都会被读取转化为FlowFile,会返回一个200响应给请求端。
-
ListenUDP: 监听传入的UDP数据包,并为每个数据包或每一组数据包创建一个FlowFile(取决于配置),并将FlowFile发送到“success”关系。
-
GetHDFS: 监视HDFS中用户指定的目录。 每当有新文件进入HDFS时,就会将其复制到NiFi中并从HDFS中删除。 GetHDFS的设计目标是移动文件,而不是复制文件。 如果该GetHDFS在群集中运行,为了从HDFS复制数据并使其保持完整,只能允许在主节点上运行。如果需要从群集中的多个节点流转输数据,则要试用ListHDFS处理器。
-
ListHDFS / FetchHDFS: ListHDFS监视HDFS中用户指定的目录,并发出一个FlowFile,其中包含它遇到的每个文件的文件名。然后,它通过分布式缓存在整个NiFi集群中保持这种状态。然后,这些FlowFile可以在集群中分发到FetchHDFS处理器,后者负责获取这些文件的实际内容,并发送包含从HDFS获取的内容的FlowFile。
-
FetchS3Object: 从AWS简单存储服务(S3)获取对象的内容。发出的DataFlow包含从S3接收的内容。
-
GetKafka: 由kafka(0.8.0版本)取回数据,将每个消息封装为FlowFile也可以将多条封装为一个FlowFlie(需要自定义分隔符)。其他kafka版本有对应的ConsumeKafkaRecord和ConsumeKafka Processor。
-
GetMongo: 执行一个用户定义的查询语句,将返回结果写入新的FlowFile中。
-
GetTwitter: 允许用户注册一个过滤器来监听Twitter“garden hose”或“Enterprise endpoint”,为接收到的每个tweet创建一个FlowFile。
1.2. 数据转化
-
CompressContent: 压缩、解压FlowFile的内容(Content)。
-
ConvertCharacterSet: 将内容从一个字符集编码到另一个字符集的字符集
-
EncryptContent: 加密、揭秘FlowFile的内容(Content)。
-
ReplaceText: 使用正则表达式修改文本内容
-
TransformXml: 使用XSLT转化XML内容
-
JoltTransformJSON: 使用 JOLT转化JSON(内容)
1.3. 路由与中介
-
ControlRate: 控制数据传输到后续Processor的速率
-
DetectDuplicate: 根据一些用户定义的条件,监视