NIFI SplitJson配置教程(1.8)

版权声明:by zhangchengk https://blog.csdn.net/weixin_36048246/article/details/88417548

描述:    

    该处理器使用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数组

图1

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

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

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

    配置JsonPath为$.*.family.father

猜你喜欢

转载自blog.csdn.net/weixin_36048246/article/details/88417548