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"}}]
輸出結果如下: