天天看點

etl工具nifi使用系列(二):簡單資料處理processor的使用

etl工具nifi使用系列(一):nifi介紹及基本概念

etl工具nifi使用系列(二):簡單資料處理processor的使用

etl工具nifi使用系列(三):關于nifi Expression Language 表達式

etl工具nifi使用系列(四):列印日志調試

etl工具nifi使用系列(五):與外部互動(HDFS、mysql、kafka)

etl工具nifi使用系列(六):使用ExecuteScript執行腳本

etl工具nifi使用系列(七):開發自己的processor

etl工具nifi使用系列(八):調用rest api

處理資料:

AttributeToJson:将流資料的屬性轉換為json

配置attributes list:添加屬性名稱,可以将屬性名稱和屬性值拼接為json鍵值對。

destination如果選擇是flowfile-attribute,則會新增一個名為“JSONAttributes“的json類型新屬性。

etl工具nifi使用系列(二):簡單資料處理processor的使用

EvaluateJsonPath:使用jsonPath表達式語言擷取json檔案的節點和内容。

etl工具nifi使用系列(二):簡單資料處理processor的使用

Jsonpath與XPath的文法結構近似,可以參考以下部落格。

位址:http://www.cnblogs.com/kill0001000/p/4884803.html

EvaluateXPath:通過xPath解析xml檔案。

可以配置選項中Destination選擇flow-attribute操作流的節點。

Return Type選擇string傳回結果為字元串。添加屬性(corpcode),添加屬性擷取規則(/result/scheme/tool_info/attribute::corpcode)擷取xml檔案中節點下的屬性。

或者(/result/scheme/tool_info)擷取xml檔案中節點中的内容。

EvaluateXPath元件應用XPath對xml進行操作,關于XPath的具體使用方法參考:http://www.w3school.com.cn/xpath/index.asp

EvaluateXQuery:擷取xml中多個節點,并将他們拆分成多個流,基于XQuery表達式語言。

XQuery參考:http://w3school.com.cn/xquery/xquery_example.asp

SplitText:将檔案按照行分割,Line Split Count參數設定分割步長

SplitJson:拆分json數組,勾選failure、original

JsonPath Expression:選擇json中需要拆分的字段名稱,該字段名稱中的value為json格式的多條資料,元件會将value中的多條資料拆分成數量相等的資料流,并舍棄拆分字段名稱value值之外的所有資料。

jsonPath:$.name[*]

原始資料:{“name”: [{“last”: “li”},{“first”: “wang”}],”testdata”: “test”}

分割後後變成兩條:

{“last”:”li”}

{“first”:”wang”}

如果整體資料就是jsonArray的形式,jsonPah可以用

$.*

。另外如果檔案名重複,可以使用updateAttribute更改filename,設定為uuid。

etl工具nifi使用系列(二):簡單資料處理processor的使用

存儲資料:

PutElasticsearch5:将資料存儲到ES中,勾選全部三個選項

Putfile:配置接收檔案路徑,勾選failure、success

資料分流:

RouteOnAttribute

RouteOnContent :使用正則比對flow-content的内容。需要添加一個動态屬性,屬性名稱将會作為一個新的relationship輸出,屬性值将作為比對的規則。

以下是從資料庫取出資料,判斷是否是多條的例子:

etl工具nifi使用系列(二):簡單資料處理processor的使用

正規表達式

^\[(.*)\]$

,比對以

[

開始

]

結束的内容

etl工具nifi使用系列(二):簡單資料處理processor的使用

RouteText

資料壓縮:

CompressContent

資料加密:

EncryptContent