Apache Nifi

2.3.8切分和聚合类处理器单元
SplitText

SplitText处理器单元可以将一个文本内容的FlowFile切分成你想要数量的FlowFile。

Apache Nifi

上面的图中表示Processor将输入的FlowFile的内容切分成多个FlowFile,每个FlowFile的内容都来自于FlowFile中的一行内容。
SplitJson

SplitJson处理器单元可以将一个JSON对象根据它的结构拆解成JSON内部的字对象。

Apache Nifi

上面的图中表示Processor将输入的FlowFile内容中的Json按照JsonPath表达式$.*进行第一级切分生成新的FlowFile。
SplitXml

SplitXml处理器单元可以将XML消息分解为多个FlowFile,且新的FlowFile中包含原有的分段信息。这种处理器单元经常适用于多个XML元素被封装在一个元素中,而此处理器单元允许这些元素分离成各自单独的XML元素。

Apache Nifi

上面的图中表示Processor对于输入的FlowFile内容中的XML按照第一层级进行切分,切分出来的子XML输出到FlowFile中。
UnpackContent

UnpackContent处理器单元可以对压缩格式的文件如ZIP和TAR进行解压,且解压后的文件作为一个FlowFile的内容输出。

Apache Nifi

上图中UnpackContent和IdentifyMimeType一起使用,后者输出的FlowFile由前者来进行处理,UnpackContent根据输入的FlowFile的mime.type属性对FlowFile的内容进行解压。
MergeContent

MergeContent处理器单元的主要功能是将多个FlowFile的内容合并成一个FlowFile。这些FlowFile的内容合并的同时,也可以通过配置对合并后的内容增加标题,页脚和分隔符,也可以对合并后的内容置顶归档格式,比如ZIP和TAR。在FlowFile合并的过程中可以依据相同的属性进行合并,也可以根据之前分片处理器分片后的序号来进行合并。用户可以定义合并后FlowFile内容的最大值和最小值,当达到这个值的时候FlowFile就合并完毕。为了防止在FlowFile没有达到配置的大小值的过程中时间太久,用户也可以通过配置超时参数来有效的解决这个问题。

Apache Nifi

上图中表示Processor将输入的FlowFile的内容按照从Queue中任意消费的FlowFile的内容进行Merge输出到新的FlowFile中,FlowFile的内容格式为TAR,选择各个输入FlowFile中一致的属性写入到新输出的FlowFile中,对于不同的Metadata不进行Merge,输出的新的FlowFile内容中同事也增加了页头和页脚。
SegmentContent

SegmentContent处理器单元可以根据配置切分后的FlowFile大小将一个大的FlowFile切分成许多小的FlowFile。分片是基于字节的偏移量而不是分隔符。这种将大的FlowFile以分片的形式进行传输可以有效的减少大文件传输过程中的延时问题。当这些分片传输到达目标端的时候,可以通过其它的处理器单元重新进行组装,例如上面所说的MergeContent处理器单元。

Apache Nifi

上面的途中表示Processor把输入的FlowFile的内容按照1MB的大小进行切分,切分成新的FlowFile且新的FlowFile中写入了分片的序号segment.index和数量segment.count属性。
SplitContent

SplitContent处理器单元的功能近似于SegmentContent将一个FlowFile分解成多个FlowFile。但区别在于SplitContent在进行分解的过程中不是按照设定的字节大小,而是根据分隔符进行分裂。Apache Nifi

上面的图中表示Processor对输入的FlowFile的内容按照竖线 | 符号进行切分,切分成多个FlowFile。