第六讲教程只简单介绍了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

ETL工具-nifi干货系列 第七讲 处理器JoltTransformJSON(续)的更多相关文章

  1. 开源ETL工具kettle系列之常见问题

    开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...

  2. Spring Boot干货系列:(七)默认日志框架配置

    Spring Boot干货系列:(七)默认日志框架配置 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候, ...

  3. 数据仓库系列之ETL过程和ETL工具

    上周因为在处理很多数据源集成的事情一直没有更新系列文章,在这周后开始规律更新.在维度建模中我们已经了解数据仓库中的维度建模方法以及基本要素,在这篇文章中我们将学习了解数据仓库的ETL过程以及实用的ET ...

  4. etl学习系列1——etl工具安装

    ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可 ...

  5. (转)Spring Boot干货系列:(七)默认日志logback配置解析

    转:http://tengj.top/2017/04/05/springboot7/ 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的, ...

  6. JVM基础系列第5讲:字节码文件结构

    温馨提示:此篇文章长达两万字,图片50多张,内容非常多,建议收藏后再看. 前面我们说到 Java 虚拟机使用字节码实现了跨平台的愿景,无论什么系统,我们都可以使用 Java 虚拟机解释执行字节码文件. ...

  7. ETL工具的功能和kettle如何来提供这些功能

    不多说,直接上干货! 大家会有一个疑惑,本系列博客是Kettle,那怎么扯上ETL呢? Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了 ...

  8. ASP.NET 5系列教程(七)完结篇-解读代码

    在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]") ...

  9. Wix打包系列(七) 添加系统必备组件的安装程序

    原文:Wix打包系列(七) 添加系统必备组件的安装程序 我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件.这里以.Net Fr ...

  10. 黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block 使用企业库异常处理应用程序模块的 ...

随机推荐

  1. P9562 [SDCPC2023] G-Matching 题解

    题目描述 给定长度为 \(n\) 的整数序列 \(a_1, a_2, \cdots, a_n\),我们将从该序列中构造出一张无向图 \(G\).具体来说,对于所有 \(1 \le i < j \ ...

  2. App隐私合规“免费”自动化检测

    简介: App隐私合规检测提供了全面的隐私合规检测报告和专家建议,从确保形式合规(隐私政策文本合规性)及实质合规(代码层合规性)的一致性,从个人信息收集.权限使用场景.超范围采集.隐私政策.三方SDK ...

  3. Kubernetes API 编程利器:Operator 和 Operator Framework

    本文整理自<CNCF x Alibaba 云原生技术公开课>第 24 讲,点击"阅读原文"直达课程页面. 关注"阿里巴巴云原生"公众号,回复关键词& ...

  4. 3千字带你搞懂XXL-JOB任务调度平台

    思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 一.概述 在平时的业务场景中,经常有一些场景需要使用定时任 ...

  5. 从操作系统层面分析Java IO演进之路

    简介: 本文从操作系统实际调用角度(以CentOS Linux release 7.5操作系统为示例),力求追根溯源看IO的每一步操作到底发生了什么. 作者 | 道坚来源 | 阿里技术公众号 前言 本 ...

  6. Git 工具下载慢问题 & 图像化界面工具

    Git 命令行淘宝镜像:git-for-windows Mirror (taobao.org) Git 图形客户端:Download – TortoiseGit – Windows Shell Int ...

  7. Solution Set - 点分治

    A[POJ1741].给定一棵树,边有权,求长度不超过\(k\)的路径数目. B[HDU4871].给定一张图,边有权,求它的最短路径树上恰含\(k\)个点的路径中最长路径的长度及数目. C[HDU4 ...

  8. 一键自动化博客发布工具,用过的人都说好(cnblogs篇)

    cnblogs和其他的博客平台相比会比较复杂,需要设置的项目也比较多一些,弄懂了cnblogs的实现方式,那么你应该对selenium的整个框架使用已经烂熟于心了. 除了正常的标题,内容,摘要之外,c ...

  9. 如果win报错无法加载文件 C:\Users\xx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本

    点击查看代码 Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

  10. DashVector x 通义千问大模型:打造基于专属知识的问答服务

    本教程演示如何使用向量检索服务(DashVector),结合LLM大模型等能力,来打造基于垂直领域专属知识等问答服务.其中LLM大模型能力,以及文本向量生成等能力,这里基于灵积模型服务上的通义千问 A ...