今天要来讲的主题是 - Variables & Parameters。如果读者们还记得 FlowFiles 在 Data Pipieline 的流动时,上一个 Processor 所产生的 attributes 或 content 是会带到下一个 Processor 继续作处理,此时我们要如何对这些 attributes 来做引用呢?
再加上有些attributes 的 value 是可重复使用的,我们不希望每次都填入一样的value,我们可以透过Variables & Parameters 来定义成一个变数,即可做设定,这样後续若要变更 value 的时候我们只要更改一个地方,就不需要一一作更改了。
所以有了这些前言,我们就可以带到今天的 Variables & Parameters。
Parameters 可以想像成我们定义了一组 config,而这组 config 当中有许多 key-value 的设定值,然後 Processor Group(PG) 就可以对接这组 config,即可运用里面的 key-value 所有的设定值来做使用。
首先一样在主画面点选 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_path
且 value: /tmp/datsets
:
设定完 Parameters 之後,接着就是要绑定到我们要用的 PG,所以我们先点选 PG 的 configuration:
然後就可以选择我们要的 Parapeter Context:
设定完成之後,我们就可以采用 titanic_parameters
底下的 Parameter,该如何做使用呢?其实是有对应的语法:
#{parameter_key}
透过 #
来做引用,所以我们在 ListFile
的 Processor 可以做红框这样的设定:
NiFi 就会把对应的 value 传入进去,就可运作这个 Processor 了。
这样的操作是不是很简单,所以我们可以想像一个 Data Pipeline 会有他专属自己的 config,里面可能是会重复使用的 value,这时候我们就可以透过 Parameter Contexts
来做设定与对接,这样会来在修正时就不需要一个一个改,同时也可做好统一管理的功能。
接着要介绍的是 Variables,通常就是用来使用上游 Processor 带下来的 attributes,先来讲他的语法,只跟 paramaters 有些微的差异,就是改透过 $
来做引用:
${attributes}
接着我们来带一个范例,一样延续刚刚在 Parameters 的范例,我们在 ListFile 後面加入 UpdateAttribute 和 FetchFile 这两个 Processor:
我们先看一下经过 ListFile
所产生出来的 attributes 有哪些,来点选 Processor 的 View data provenance
:
接者点选对应的 FlowFiles,然後看 Attributes,我们会看到所有的 attributes:
接下来我们拿 absolute.path
和 filename
这两个 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 这两个概念去做延伸的,所以明天的主题对於读者来说也是不会太困难。
先制作出简单的一个 VC 上面显示取得的三大法人资料的日期。 拉出两个 Button、一个 stat...
当object中的function作为callback function传递给setTimeout时...
ROS Client Library ROS 最为一款广为人知的机器人作业系统,当然也能让很多种程序...
小弟是初新者,第一次写笔记,写不好请见谅也请多指教! 因为公司功能需求有去接触到,想说尝试做个笔记与...
闲话家常 前面几天都是枯燥乏味的设定,也是很重要的。要有一个稳定的环境,才能够专心在Coding。 ...