还记得系列文的一开始,有先向各位读者介绍在 NiFi 中重要的几个 Componenet,那时候还只有概念文字的说明,现在我们已经建立起服务在自己本机上了,而在接下来的几天我会再针对每一个 Component 作进一步地操作,同时也会带一些操作来让读者对於这些名词可以更印象深刻。
在一开始我们就有稍微点到 FlowFiles 的意思,这里在贴上来让大家回温一下:
我们可以想像是资料中或是File中的一笔Record,甚至是一包资料同时含有很多笔 record,
今天假设有一张 Table且其中有100笔资料时,
当 NiFi 从中读取时,这100笔 Record 就会在 NiFi 产生100笔 FlowFiles,
而 FlowFiles 会带有自己的 attribute 和 content。
在套用一个比较熟悉的举例,可以把『FlowFiles』类似於『网路封包』。网路封包一定会有既定的 metadata, 像是发送时间、header等资讯,这些对应到的就是 FlowFiles 的 Attributes; 而网路封包也会带着真实的资料内容,可能加密也有可能不加密,而这对应到的就是 FlowFiles 的 content。
上面是一个很概要的说明,其实 FlowFiles 还有几个重要的特性:
这里给大家呈现一个应用,就会更加理解。我们先从 Kaggle - Titanic - Machine Learning from Disaster 下载一份资料集,其中有一个 train.csv
,共有 891 笔资料,像透过 NiFi 将资料读出来,会产生什麽样的状况呢?先看一下下面的 git 档:
先建立一个简单的小 Pipeline,共有 4 个 Processor:
下一篇会有更详细地介绍这些 Processor 说明,这边就不特别提太多。
这里在呈现刚刚 gif 档的静态图:
可以看到在 FetchFile
的时候他是 output 一个 FlowFile,因为他是读取档案,这时候他会把档案全部的资料塞成同一个 FlowFile; 但下一步的时候,SplitRecord
就会把里面的资料一笔一笔切出来各个 FlowFiles,所以就会看到有 891 笔 FlowFiles。
这边就能印证出 FlowFile 他可以是一包资料(File) 或是每一笔File 中的 records。而下游任务就可以藉此接受到每一笔资料做处理。
前面我们已经知道 FlowFiles 是如何产生出来,以及在 NiFi 的呈现状况如何。但我一直都有提到的还有一件事情,就是 『Attributes』和 『Content』,这部分要如何在 NiFi 看到呢?一样先来看 gif 档:
可以从上面的操作可以看到如何呈现『Attributes』和 『Content』,如果太快我这边我在细讲一下。
当我们点击 List Queue
或 View data provenance
的时候可以看到每一个 FlowFile,而当我们点选最左边的 i
,就可以看到每一笔 FlowFile 的详细资讯:
点选进来後,就可以看到 FlowFile 的 Details,其中在右下角可以看到有 Download
和 View
的按钮,可以看到或下载目前这个 FlowFile 的真实资料内容
假如我们点选 View
,就可以看到如下的资料内容,最右手边也会呈现内容是什麽格式,像是csv, json 等
然而,我们回到第2步骤,若点选ATTRIBUTES
,就可以看到所有关於这个 FlowFile 的 metadata,而这些 key 就会跟着 FlowFile 流到下游的 Processor,所以在下一个 Processor 也会看到同样的 Attributes,而我们也可以针对这些 key 来做一些操作,在未来的场景应用时就会带大家做一次。
有了这些操作的简单小范例,我相信读者们对於 NiFi FlowFile 的概念有更近一步地认识了,那未来我们在其他操作和应用时提到 FlowFile 的时候,你也可以立即反应它的概念与原因。最後,今天大家已经看到 Processor 出现了,所以想当然而明天就是要来介绍『Processor』啦,敬请期待一下。
>>: Day20 - 轻前端 Vue - 复杂型别 object + object collection
经过上一篇物件侦测(1)的介绍,我们终於可以正式进入更完整的影像侦测小世界了! 之前说过物件侦测有的...
前阵子刚写完 JavaScript,差不多可以开始进行 Vue 的时候,突然想起在 Vue 开发的时...
很开心能够完成 30天的 Open-Match 文章分享,其实中间有些东西,是我一边研究一边写出来的...
在处理完资料集後,将资料放入模型训练时,会将资料集分为训练集、验证集和测试集,训练集是模型会对训练集...
本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...