Apache NIFI JoltTransformJSON

#JoltTransformJSON


编辑人:酷酷的诚 邮箱:zhangchengk@foxmail.com


#描述

使用Jolt转换json,成功的路由到'success',失败的'failure'。处理JSON的实用程序不是基于流的,因此大型JSON文档转换可能会消耗大量内存。目前支持UTF-8流文件内容和Jolt Spec。可以使用表达式语言定义Spec,其中可以在Spec语法的左侧或右侧引用属性。支持自定义转换(实现转换接口)。包含当前类路径上不存在的自定义库的模块可以通过自定义模块目录属性包含。注意:在配置处理器时,如果用户选择了默认的转换,但仍然提供了一个链Spec,那么系统不会警告该Spec是无效的,并且会产生失败的流文件。这是确定的一个已知问题。

#属性配置

在下面的列表中,必需属性的名称以粗体显示。任何其他属性(不是粗体)都被认为是可选的,并且指出属性默认值(如果有默认值),以及属性是否支持表达式语言。

属性名称默认值可选值描述
Jolt Transformation DSLjolt-transform-chainCardinality
Chain
Default
Modify -Default
Modify - Define
Modify - Overwrite
Remove
Shift
Sort
Custom
指定应该使用哪种Jolt转换模式
Custom Transformation Class Name  自定义Jolt转换工具类的全类名
Custom Module Directory  文件和/或目录的路径列表,其中包含包含自定义转换的模块(不包括在NiFi的类路径中)。
Jolt Specification  JSON数据转换Spec。如果选择了Sort转换,则忽略此值。
支持表达式语言:true(将使用流文件属性和变量注册表进行计算)
Transform Cache Size1 编译一个震荡转换可能相当昂贵。理想情况下,这只会做一次。但是,如果在转换中使用了表达式语言,我们可能需要为每个流文件进行新的转换。这个值控制我们在内存中缓存多少个转换,以避免每次编译转换。
Include Schemafalsetrue
false
如果为true,美化输出json的格式。

#连接关系

名称描述
success成功地转换json
failure未成功地转换json

读取属性:

没有指定。

#写属性

NameDescription
mime.typeapplication/json

#状态管理

此组件不存储状态。

#限制

此组件不受限制。

#输入要求

此组件需要传入连接关系。

#系统资源方面的考虑

没有指定。

#应用场景

该组件使用开源JOLT库来实现批量JSON转换,JOLT目前是一个不基于流式的非常高效的json转换库,JOLT有自己定义的一套DSL。使用该组件需要先了解JOLT的知识,并编写出相应的JOLT规范。这里不做具体示例,可以直接参看JOLT教程

#公众号

关注公众号 得到第一手文章/文档更新推送。

### 关于 Apache NiFi 的入门指南 Apache NiFi 是一款强大的数据集成工具,设计用于自动化管理来自不同源到目标的数据流动。对于初次使用者而言,《第二章 Apache NiFi 入门指南》提供了一个简洁明了的学习路径[^1]。 #### 安装与配置 为了启动并运行 NiFi 实例,用户需下载最新版本的软件包,并按照官方文档中的指导完成安装过程。一旦设置完毕,通过浏览器访问 http://localhost:8080/nifi 即可进入图形化界面。 #### 基础概念介绍 - **FlowFile**: 表示正在处理的数据单元。 - **Processor**: 执行具体操作的任务组件,如获取文件、转换内容等。 - **Connection**: 连接 Processor 之间的通道,定义数据传输方向。 - **Process Group**: 将多个 Processors 和 Connections 组合成逻辑单元。 - **Controller Services**: 提供共享服务给其他组件使用的辅助功能模块。 #### 创建简单工作流实例 假设有一个需求是从本地磁盘读取日志文件并将它们发送至远程服务器存储: 1. 使用 `GetFile` Processor 获取指定目录下的新文件; 2. 应用 `UpdateAttribute` 修改 FlowFiles 属性(例如添加时间戳); 3. 利用 `PutSFTP` 或者 `PutHTTP` 发送经过加工后的记录到目的地; ```xml <process-group name="Log Transfer"> <!-- Get log files from local filesystem --> <processor type="org.apache.nifi.processors.standard.GetFile"/> <!-- Update attributes of the flow file --> <processor type="org.apache.nifi.processors.attributes.UpdateAttribute"/> <!-- Send processed logs via SFTP or HTTP --> <processor type="org.apache.nifi.processors.standard.PutSFTP"/> </process-group> ``` 此段 XML 片段展示了如何在一个名为 "Log Transfer" 的 Process Group 中组织上述三个处理器来实现基本的日志转移流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值