ETL工具-nifi干货系列 第十八讲 nifi Funnel实战教程
1、Funnel (漏斗),Funnel是 NiFi 组件,用于将多个连接中的数据合并到一个连接中。
使用场景:nifi中的Funnel组件用于合并多个数据流并将它们传递到下游处理器。它可以将来自不同来源的数据流合并到一个数据流中,方便后续处理器对数据进行处理。Funnel组件通常用于将不同分支的数据合并成一个流,例如将多个数据源的数据合并后进行聚合、分析或存储等操作。通过Funnel组件,nifi可以实现数据的合并和汇总,进一步实现数据流的处理和分析。
1)处理器GenerateFlowFile1生成2条数据,处理器GenerateFlowFile2生成2条数据,经过组件Funnel汇合之后将数据传递给LogMessae处理器(或者其他处理器),此时LogMessae处理器将收到4条数据。
2)由此可见Funnel处理器还具有解耦的作用:比如再加个类似的GenerateFlowFile3继续生产数据,后续流程不需要任何调整。
3)说到多对1聚会组件,大家肯定会想到1对多分发组件。在Apache NiFi中,可以使用RouteOnAttribute、RouteOnContent等处理器来实现数据的分发。这些处理器可以根据预定义的条件将数据流分发到不同的处理路径。另外,还可以结合使用UpdateAttribute处理器来添加属性,然后通过RouteOnAttribute根据这些属性的值来进行分发。另外,还可以使用Site-to-Site连接来将数据分发到其他的NiFi实例或其他系统中。
2、双击Funnel上游连接对多个连接内的流文件进行统一的背压,优先级设置,如下图所示:
Name:连接名称是可选的。如果未指定,则连接的名称将显示为连接中活动的关系的名称.
FlowFile Expiration:FlowFile过期是一个概念,用于自动删除不能及时处理的数据流。例如,在预期数据量超过可以发送到远程站点的数据量时,这是很有用的。在这种情况下,可以与优先级处理器一起使用过期机制,确保最高优先级的数据首先得到处理,然后任何在一定时间段内无法处理的数据(例如一个小时)可以被丢弃。过期时间是基于数据进入NiFi实例的时间。换句话说,如果在给定连接上设置了文件过期时间为“1小时”,并且一个已在NiFi实例中一个小时的文件到达该连接,它将会过期。默认值为0秒表示数据永远不会过期。当设置了不为“0秒”的文件过期时间时,连接标签上会出现一个小时钟图标,这样DFM在查看画布上的流程时可以一目了然地看到。
Back Pressure Object Threshold 、Size Threshold
NiFi提供了两种用于背压的配置元素。这些阈值指示在不再调度运行连接源组件之前队列中应允许存在多少数据。这样可以避免系统被数据淹没。第一个选项是“背压对象阈值”。这是在应用背压之前可以在队列中存在的FlowFile数量。第二个配置选项是“背压数据大小阈值”。这指定了在应用背压之前应排队的最大数据量(按大小)。这个值是通过输入一个数字后跟一个数据大小(B代表字节,KB代表千字节,MB代表兆字节,GB代表吉字节,TB代表太字节)进行配置的。
Load Balance Strategy:为了在集群中的各个节点之间分发流程中的数据。后续集群讲解时具体介绍。