Apache NIFI SplitJson

SplitJson


编辑人(全网同名):酷酷的诚 邮箱:[email protected]


#描述

该处理器使用JsonPath表达式指定需要的数组元素,将JSON数组分割为多个单独的流文件。每个生成的流文件都由指定数组的一个元素组成,并传输到关系“split”,原始文件传输到关系“original”。如果没有找到指定的JsonPath,或者没有对数组元素求值,则将原始文件路由到“failure”,不会生成任何文件。

该处理器需要使用人员掌握JsonPath表达式语言。

#属性配置

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

属性名称 默认值 可选值 描述
JsonPath Expression     一个JsonPath表达式,它指定用以分割的数组元素。
Null Value Representation 1 ▪empty string
▪the string 'null'
指定结果为空值时的表示形式。

#连接关系

名称 描述
failure 如果一个流文件处理失败(例如,流文件不是有效的JSON数组或者指定的JsonPath路径不存在),它将被路由到这个关系
original 被分割成段的原始流文件。如果流文件处理失败,则不会向该关系发送任何内容
split 成功分割的流文件结果路由到这个关系

#读取属性

没有指定。

#写属性

名称 描述
fragment.identifier 从同一个父流文件生成的所有分割流文件都将为该属性添加相同的UUID(随机生成)
fragment.index 一个增长的数字,表示从单个父流文件创建的分割流文件的顺序
fragment.count 从父流文件生成的分割流文件的数量
segment.original.filename 父流文件的文件名

#状态管理

此组件不存储状态。

#限制

此组件不受限制。

#输入要求

此组件需要传入关系。

#系统资源方面的考虑

资源 描述
内存 分割生成的流文件,以及被分割流文件的全部内容(作为JsonNode对象)会读入内存。由于JSON的大小或由于配置输出大量的分割文件,则可能过度使用内存,此时可能需要分阶段进行来避免过度使用内存。

#应用场景

该处理器主要用于分割json数组,灵活运用时也可做数据清洗(比如需要抽取json中某一个字段)。

#示例说明

1:下面是该处理器应用最多的情况,如下图为一json数组

Apache NIFI SplitJson_第1张图片

在SplitJson中配置JsonPath为 $.* (匹配数组任意元素)

Apache NIFI SplitJson_第2张图片

split关系中输出3个分割文件,original关系中输出被分割原文件。

Apache NIFI SplitJson_第3张图片

Apache NIFI SplitJson_第4张图片

2:举例说明该处理器的复杂使用,如下图为一多层次结构json数组,需要分割取出json数组中的father字段。

Apache NIFI SplitJson_第5张图片

配置JsonPath为$.*.family.father

Apache NIFI SplitJson_第6张图片

结果:

Apache NIFI SplitJson_第7张图片

#公众号

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

你可能感兴趣的:(NIFI-Processors)