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:爲了在集羣中的各個節點之間分發流程中的數據。後續集羣講解時具體介紹。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章