NiFi Processors之EvaluateJsonPath

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

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

描述

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

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

属性

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

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

动态属性

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

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

NameValue
一个FlowFile的属性一个JsonPath表达式

使用说明

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

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

场景:

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

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

额外添加的属性:

NameValue
name$.name
age$.age
msg$.msg

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

NameValue
Replacement ValueINSERT INTO msg VALUES('${'name'}','${'age'}','${'msg'}')

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值