Apache NiFi是由美國過國家安全局(NSA)貢獻給Apache基金會的開源項目,其設計目标是自動化系統間的資料流。基于其工作流式的程式設計理念,NiFi非常易于使用,強大,可靠及高可配置。兩個最重要的特性是其強大的使用者界面及良好的資料回溯工具(官網吹的)

nifi 使用起來還比較友善,基于web 的控制界面能夠比較好的管理和控制資料流轉,資料處理的業務流程也比較明确,下面說一下 如何定制開發一個基于我們自身業務的元件
1.工程結構
nifi對工程結構做了規範,我們隻要按照他的格式創建立工程包 .nar,放到../lib/目錄下,啟動服務就能在頁面元件中心找到并使用我們控件
1)簡單的方式是在源碼中打開一個nar 子產品 ,根據我們的業務修改名稱然後。。。(該怎麼玩怎麼玩,省去建立工程子產品的麻煩)
2)就是要自己建立,那麼總的來說 三步:
a.建立maven 子產品 xxxx-xxx--bundle
pom.xml 說明依賴關系:
b. 在a子產品下再建立 xxx-xxx-nar
pom.xml 說明依賴關系
c.在a子產品下建立 xxx-xxx-processors
pom.xml 說明依賴關系
具體操作看看 源碼中的結構就明白了,這都不是重點
2.開發屬于自己的功能元件
元件一般來說分為service 和processor 咱們先來說以下建立一個processor
總的來說分兩步 1.元件功能開發,2元件聲明(向外暴露)
元件功能開發,在xxx--xxx-processors 建立工程類xxxx.java
功能元件總的來說 也分為三個部分
a. 外界參數聲明 2,輸出關系聲明 3,資料流觸發操作
a.外界參數說明
如果我們的元件需要和外界做互動,需要外部傳入參數那麼就需要做參數聲明
通過這種方式聲明一個參數,nifi 自身提供了比較多的驗證器 可以對參數做限制驗證 大家自己看着玩
參數定義之後需要向外部暴露,需要重寫getSupportedPropertyDescriptors 方法
nifi 還支援動态增加屬性,方式差不多,大家自己看着玩。。。
2.定義轉換關系
nifi 通過轉換關系對資料做流轉操作,是以我們元件中必須定義至少一個轉換關系
同樣關系定義完成,需要對外界暴露,就需要重寫getRelationships
好了 到此 準備工作基本完成 ,下來就進入主體部分,操作檔案流
3.檔案流操作
nifi 是以FlwoFile 為處理機關的,資料可以抽象了解為一個個的flowfile 這也就是資料流了

nifi 資料處理是以重寫onTriger 開始的
對于flowfile 的操作大緻分為三中
1.讀 從資料流中讀取資料内容
2.寫 寫入資料到flowfile中
3.讀完寫
這裡完成邏輯處理之後 ,nifi 必須要将flowfile送出轉換
好了 這裡就完成了元件功能開發,下面對我們新開發的元件做一下聲明,使其對外暴露
看好了 我隻來一遍
好了 好了 都完成了 打包 放到nifi 安裝目錄下的lib目錄下 重新開機服務就好了
你看 揍死這麼神奇
好了好了 大家自由玩耍吧 ,我也是才接觸這個 又不正确或不到位的地方多包涵,一起交流 互相學習 共同進步,第一次寫blog 話有些多了