ETL工具-nifi干货系列 第七讲 处理器JoltTransformJSON(续)

第六讲教程只简单介绍了Jolt的chain转换模式,本节课介绍下Jolt的各种转换模式。

点击的处理器JoltTransformJSON高级配置选项,进行测试Jolt的转换模式。

1、Cardinality:更改了输入JSON数据元素的基数,适用于jsonObj和jsonList 之间的转换。

list转为obj

input

{
    "review": {
        "nameArry": ["Javax 小金刚", "Javax 大金刚"]
    },
    "data": {
        "nameList": [{
            "id": "1",
            "name": "Javax 小金刚"
        }, {
            "id": "2",
            "name": "Javax 大金刚"
        }]
    },
    "isMap": {
        "singleName": "Javax 小金刚"
    },
    "myName": "Javax 小金刚",
    "emptyListContainer": {
        "emptyList": []
    },
    "nullData": null
}

Jolt Specification

{

        "review" : {
           "nameArry" : "ONE"
        },

        "data" : {
            "nameList" : "ONE"
        },

        "isMap" : "ONE",

        "myName" : "ONE",

        "emptyListContainer" : {
            "emptyList" : "ONE"
        },

        "nullData" : "ONE"

    }

output

{
    "review": {
        "nameArry": "Javax 小金刚"
    },
    "data": {
        "nameList": {
            "id": "1",
            "name": "Javax 小金刚"
        }
    },
    "isMap": {
        "singleName": "Javax 小金刚"
    },
    "myName": "Javax 小金刚",
    "emptyListContainer": {
        "emptyList": null
    },
    "nullData": null
}

obj转为list

 input

{
   "myName" : "Javax 小金刚"
}

Jolt Specification

{
    "myName" : "MANY"
}

output

{
    "myName": ["Javax 小金刚"]
}

2、Default:如果输入中不存在指定的字段,则添加默认值。

 input

{
   "myName" : "Javax 小金刚"
}

Jolt Specification

{
   "age" : 18
}

output

{
    "myName": "Javax 小金刚",
    "age": 18
}

3、Modify -Default:修改字段的值,如果字段不存在则添加默认值,如果字段存在不做处理。

input

{
   "myName" : "Javax 小金刚",
   "playGames":"太空战士"
}

Jolt Specification

{
   "playGames":"过家家"
}

output

{
    "myName": "Javax 小金刚",
    "playGames": "太空战士"
}

4、Modify - Define:修改字段的值,如果字段不存在则创建该字段并赋值,测试结果同Modify - Define。


5、Modify - Overwrite:修改字段的值,如果字段不存在则忽略,存在的话强制覆盖。

 input

{
   "myName" : "Javax 小金刚",
   "playGames":"太空战士"
}

Jolt Specification

{
   "playGames":"过家家"
}

output

{
    "myName": "Javax 小金刚",
    "playGames": "过家家"
}

6、Remove:移除指定的字段。

 input

{
   "myName" : "Javax 小金刚",
  "playGames":"太空战士"
}

Jolt Specification

{
   "playGames":""
}

output

{
    "myName": "Javax 小金刚"
}

7、Shift:将字段的值移动到另一个字段下。

 input

{
   "name" : "Javax 小金刚",
   "id":"1"
}

Jolt Specification

{
   "name":"person.name",
   "id":"person.id"
}

output

{
    "person": {
        "name": "Javax 小金刚",
        "id": "1"
    }
}

8、Sort:对对象中的字段进行排序(按字母顺序)。

 input

{
"d":"test1",
"c":"test2",
"b":"test3",
"a":"test4"
}

Jolt Specification

output

{
    "a": "test4",
    "b": "test3",
    "c": "test2",
    "d": "test1"
}


9、Custom:自定义转换规则,需要自定义转换插件,后续讲解,本次略。

10、Chain:按顺序应用多个转换规则,将上面提到的规则合并到一起顺序执行多个转换规则。

 input

  {
     "id":"1",
     "name":"Java小金刚"
  }

Jolt Specification

[
  {
    "operation": "shift",
    "spec": {
      "id":"person.id",
       "name":"person.name"
    }
  },
  {
    "operation": "default",
    "spec": {
      "ext":"备注"
    }
  }
]

output

{
    "person": {
        "id": "1",
        "name": "Java小金刚"
    },
    "ext": "备注"
}

注:这里仅仅介绍了常用的示例,实际工作用更多的是用到chain这个。还有很多高级的用法,大家可以自行探索下。

传送门:https://github.com/bazaarvoice/jolt/tree/master/jolt-core/src/test/resources/json

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: ETL工具是指用于数据抽取(Extract)、转换(Transform)和加载(Load)的软件工具。在Java中,有多种ETL工具可供选择,其中一种是Kettle。Kettle是一个开源的ETL工具,它提供了一套强大的数据集成、数据转换和数据加载功能,可以通过编写Java代码来使用Kettle的API进行ETL操作。在使用Kettle时,可以通过指定jdbcUrl来连接数据库,并使用execRepositoryJobs方法执行Kettle的作业。\[1\]\[2\]此外,除了Kettle,还有其他的ETL工具可供选择,比如DataX。DataX也是一个开源的ETL工具,它的实现思路是通过定时任务从一个数据源读取数据并同步到另一个数据源中。感兴趣的开发者可以根据自己的需求选择适合的ETL工具进行数据处理。\[3\] #### 引用[.reference_title] - *1* *3* [一文带你入门ETL工具-datax的简单使用](https://blog.csdn.net/weixin_29634081/article/details/114079748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Etl工具之Kettle與java集成二](https://blog.csdn.net/weixin_34746495/article/details/115660842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值