ETL工具-nifi乾貨系列 第六講 處理器JoltTransformJSON

1、處理器作用

使用Jolt轉換JSON數據爲其他結構的JSON,成功的路由到'success',失敗的'failure'。處理JSON的實用程序不是基於流的,因此大型JSON文檔轉換可能會消耗大量內存。

Jolt:JSON 到 JSON 轉換庫,用 Java 編寫,其中轉換的 "規範" 或者描述文件本身就是一個 JSON 文檔。

2、屬性配置

(Jolt Transformation DSL)指定應該使用哪種Jolt轉換模式,目前有如下10種轉換模式:

Cardinality:更改了輸入JSON數據元素的基數,如json中的string 類型的字段變更爲list
Chain:按順序應用多個轉換規則。
Default:如果輸入中不存在指定的字段,則添加默認值。
Modify -Default:修改字段的值,如果字段不存在則添加默認值。
Modify - Define:修改字段的值,如果字段不存在則創建該字段並賦值。
Modify - Overwrite:修改字段的值,如果字段不存在則忽略。
Remove:移除指定的字段。
Shift:將字段的值移動到另一個字段下。
Sort:對對象中的字段進行排序。
Custom:自定義轉換規則。

(Jolt Specification)JSON數據轉換Spec。如果選擇了Sort轉換,則忽略此值。
支持表達式語言:true(將使用流文件屬性和變量註冊表進行計算)

(Transform Cache Size)轉換緩存大小:
編譯 Jolt 轉換可能會相當昂貴。理想情況下,這隻會執行一次。然而,如果在轉換中使用表達式語言,我們可能需要爲每個 FlowFile 使用新的轉換。該值控制我們在內存中緩存多少個這些轉換,以避免每次都需要編譯轉換。

(Pretty Print)json是否美化輸出

(Max String Length)最大字符串長度

3、示例演示

處理器GenerateFlowFile 產生json字符串{"id":"1","name":"Java小金剛"}

Jolt Transformation DSL 設置爲chain

Jolt Specification 設置爲[{"operation":"shift","spec":{"id":"person.id","name":"person.name"}}]

輸出結果如下:

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章