Abstract:该博客是之前博客的续篇,继续介绍一些处理器的功能
7.Splitting and Aggregation
- SplitText: 将一个flowfile中的文本内容划分为一个或者多个flowfile,最终flowfile的个数取决于行数的设置。e.g. 该处理器可以将flowfile分割成多个flowfile,每个flowfile只包含一行文本。
- SplitJson:对于一个Json Object,可以根据包含数组或者孩子的来对flowfile进行划分,每个flowfile包含一个json元素
- SplitXml: 将XML消息划分为多个flowfile,每个flowfile包含原始xml内容的一部分。
- UnpackContent:可以对多种压缩格式的文件进行解压缩操作,原始压缩包中的每个文件将会被封装为一个单独的flowfile
- MergeContent:将多个flowfile融合为一个flowfile。多个flowfile进行融合可以通过将他们的融合简单的拼接在一起,并可选的加上header和footer等内容。或者flowfile通过共同的属性来进行融合,如果这些flowfile是通过一些split processor分割而成,那么mergeContent可以反碎片化
- SegmentContent:将一个flowfile划分成多个小flowfile,划分的依据是设定的数据大小。分割后的flowfile可以通过MergeConetent 处理器重新组合在一起,注意要采用Defragment 模式
- SplitContent:与SegementContent类似,但是该处理器不是根据byte作为边界,而是通过制定的byte sequence
- HTTP
- GetHttp:下载http或者https的url路径下的内容,并且处理器将会记录该url的ETag以及最新更新时间以确保不会持续介入相同的数据
- ListenHttp:启动一个Http服务并监听连接请求,post请求的内容将作为flowfile的内容,并返回一个200代码
- InvokeHTTP:根据用户设置的内容生成一个post 请求。该处理涉及到的参数较多,功能也要比GetHttp和PostHttp要强大。这个处理器不能作为source processor,必须有flowfile作为输入。
- PostHTTP:执行一个http请求,flowfile中的内容将作为消息。该处理器经常与ListenHTTP 协同使用,来在nifi不同的case之间传送数据。(当nifi的不同实例之间需要传输数据时,首选应该是nifi的site-to-Site协议,当Site-to-Site失效时,就可以通过Http 代理的方式传送数据)
- HandleHttpRequest/HandleHttpResponse:HandleHttpRequest是一个source processor,不需要一个flowfile来触发,它会启动一个http server监听连接请求,但是它并不会给用户send response,输出为一个flowfile,包含了http请求内容以及其他一些参数,例如header等。
HandleHttpResponse在flowfile处理之后向用户发送一个response。这些处理器配合使用就能够搭建成一个web service。
- Amazon Web Services
- FetchS3Object:提取存储在Amazon simple storage Service中对象的内容,这个内容将会写入到一个flowfile中
- PutS3Object:将flowfile中的内容写入到Amazon Simple Storage中
- PutSNS:将flowfile的内容作为一个notification发送给Amazon Simple Notification Service
- GetSQS:从Amazon Simple Queuing Service中读取消息,并将消息的内容写入到flowfile中
- PutSQS:将Flowfile的内容封装为message并发送给Amazon Simple Queuing Service
- DeleteSQS: 从Amazon Simple Queuing Service中删掉一条消息,可以与GetSQS配合使用,从消息队列中读取一条消息,并进行处理,然后将该消息对象从队列中删除