iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
AI & Data

Apache NiFi - 讓你輕鬆設計 Data Pipeline系列 第 13

Day13 NiFi - Variables & Parameters

今天要來講的主題是 - Variables & Parameters。如果讀者們還記得 FlowFiles 在 Data Pipieline 的流動時,上一個 Processor 所產生的 attributes 或 content 是會帶到下一個 Processor 繼續作處理,此時我們要如何對這些 attributes 來做引用呢?

再加上有些attributes 的 value 是可重複使用的,我們不希望每次都填入一樣的value,我們可以透過Variables & Parameters 來定義成一個變數,即可做設定,這樣後續若要變更 value 的時候我們只要更改一個地方,就不需要一一作更改了。

所以有了這些前言,我們就可以帶到今天的 Variables & Parameters。

Parameters

Parameters 可以想像成我們定義了一組 config,而這組 config 當中有許多 key-value 的設定值,然後 Processor Group(PG) 就可以對接這組 config,即可運用裡面的 key-value 所有的設定值來做使用。

How to use?

首先一樣在主畫面點選 Global Menu 內的 Parameter Contexts

接著我們就可以加入一組 Parameter Contexts,這邊我們加入一個名為 titanic_parameters:

接著點選右邊的 PARAMETERS,我們就可以加入我們要的 config,然後以 key-value 的形式,假設我這邊加入一個 data_path 的 key,value 為 /tmp/datasets (原始資料存放的 folder path):

其中,若使用者認為這個 value 是屬於敏感性資料的話,你可以勾選 Sensitive Value 為 Yes,NiFi 就會幫這個 Value 作隱藏且加密。

加入完成之後,我們就可以看到剛剛建立的這組 Parameters Contexts 底下有一個 key: data_pathvalue: /tmp/datsets:

Bind Processor Group

設定完 Parameters 之後,接著就是要綁定到我們要用的 PG,所以我們先點選 PG 的 configuration:

然後就可以選擇我們要的 Parapeter Context:

設定完成之後,我們就可以採用 titanic_parameters 底下的 Parameter,該如何做使用呢?其實是有對應的語法:

#{parameter_key}

透過 # 來做引用,所以我們在 ListFile 的 Processor 可以做紅框這樣的設定:

NiFi 就會把對應的 value 傳入進去,就可運作這個 Processor 了。

這樣的操作是不是很簡單,所以我們可以想像一個 Data Pipeline 會有他專屬自己的 config,裡面可能是會重複使用的 value,這時候我們就可以透過 Parameter Contexts 來做設定與對接,這樣會來在修正時就不需要一個一個改,同時也可做好統一管理的功能。

Variables

接著要介紹的是 Variables,通常就是用來使用上游 Processor 帶下來的 attributes,先來講他的語法,只跟 paramaters 有些微的差異,就是改透過 $ 來做引用:

${attributes}

接著我們來帶一個範例,一樣延續剛剛在 Parameters 的範例,我們在 ListFile 後面加入 UpdateAttribute 和 FetchFile 這兩個 Processor:

我們先看一下經過 ListFile 所產生出來的 attributes 有哪些,來點選 Processor 的 View data provenance

接者點選對應的 FlowFiles,然後看 Attributes,我們會看到所有的 attributes:


接下來我們拿 absolute.pathfilename 這兩個 attbitutes 合併成一個完整檔案絕對路徑的 attributes,所以勢必要取用這兩個,接著就可以透過 Variables 的方式來處理。

我們只要在在 UpdateAttribute Processor 加入了這個 property,透過 $ 做引用:

接著我們再來看一次在 UpdateAttribute 的 FlowFile attributes:

從紅框中就可以看到我們將這兩個 attributes 合併成一個新的 attributes 了。

所以簡單來說,當有需要利用上游 Processor 所產生的 attributes 去做一些處理或是判斷時,就可以透過 Variables 的呼叫方式來做使用。

小總結

以上就是針對 Parameters 和 Variables 的介紹,其實都是針對一些 value 去做引用跟處理,只是兩個使用的場境與用途比較不一樣,這裡在簡單整理給各位一個表格:

Parameters Variables
語法 #{key} ${attributes_name}
場景應用 組織 Data Pipeline 常用的設定,變成一組 config 引用上游 Processor 所產生的 attributes 來做處理或判斷,或是利用 NEL 做計算等

介紹完這兩個概念及操作之後,在前方的表格其實我有提到一個名詞,就是『NEL(NiFi Expression Language)』。也就是明天要帶到的主體,同時是 NiFI 自己的語法,其實操作方式與寫法很簡單,然而都是建立於 Parameters 和 Variables 這兩個概念去做延伸的,所以明天的主題對於讀者來說也是不會太困難。

Reference


上一篇
Day12 NiFi - Reporting Task & Bulletin Board
下一篇
Day14 NiFi - NiFi Expression Language
系列文
Apache NiFi - 讓你輕鬆設計 Data Pipeline30

尚未有邦友留言

立即登入留言