NiFi Processors之EvaluateJsonPath

NiFi是一个数据处理和分发系统,其中很重要的一部分是处理器(Processors)。一个处理器组合系统间的数据路由、转换或调解。处理器可以访问给定FlowFile的属性及其内容流。处理器可以在给定的工作单元中对零个或多个FlowFile进行操作,并提交该工作或回滚。

本文介绍NiFi处理器之一 :EvaluateJsonPath

描述

根据FlowFile的内容评估一个或多个JsonPath表达式。这些表达式的结果将分配给FlowFile属性,或者写入FlowFile本身的内容,具体取决于处理器的配置。

通过添加用户定义的属性输入JsonPaths; 属性名称映射到将放置结果的Attribute Name(如果Destination是flowfile-attribute;否则,将忽略属性名称)。该属性的值必须是有效的JsonPath表达式。

属性

这里只介绍我使用过的配置:

名称 默认值 允许值 描述 提示
Destination flowfile-content flowfile-content
flowfile-attribute
指示JsonPath评估的结果是写入FlowFile内容还是FlowFile属性; 如果使用属性,则必须指定“属性名称”属性。如果设置为flowfile-content,则只能指定一个JsonPath,并忽略属性名称。 我感觉使用’flowfile-attribute’比较方便
Return Type auto-detect auto-detect
json
scalar
指示期望返回的JSON Path的类型。选择’auto-detect’,将为’flowfile-content’返回’json’,为’flowfile-attribute’返回’scalar’。 一般使用默认值

动态属性

动态属性允许用户指定属性名和属性值。

如果Destination设置为’flowfile-attribute’,这里的动态属性才有用,否则,动态属性将被忽略。

Name Value
一个FlowFile的属性 一个JsonPath表达式

使用说明

对于这个处理器,关键属性是Destination,我还没用过flowfile-content,先不说,下面聊聊flowfile-attribute的用法。

使用flowfile-attribute这个属性值,关键是添加FlowFile的动态属性。

场景:

接收的flowfile内容是json字符串:

{  
   "name":"xingweidong",
   "age":1000,
   "msg":"Hello world!"
}

额外添加的属性:

Name Value
name $.name
age $.age
msg $.msg

下游处理器可以使用ReplaceText,用来接收上面自定义的参数,这里使用ReplaceText处理器拼接SQL语句,这也是常见用法,配置如下:

Name Value
Replacement Value INSERT INTO msg VALUES('${'name'}','${'age'}','${'msg'}')

这里注意,作为Value的SQL语句没有分号(。

ReplaceText处理器的下游可使用PutSQL处理器,PutSQL处理器用来执行SQL语句。

本文主要介绍EvaluateJsonPath处理器,对于ReplaceText处理器和PutSQL处理器不做过多说明。

你可能感兴趣的:(大数据)