首页 > 其他分享 >ETL工具-nifi干货系列 第十讲 处理器RouteOnAttribute使用教程,方便灵活控制数据流向

ETL工具-nifi干货系列 第十讲 处理器RouteOnAttribute使用教程,方便灵活控制数据流向

时间:2024-04-09 10:59:10浏览次数:26  
标签:nifi name Route userId ETL RouteOnAttribute LogMessage 路由 matched

1、今天我们一起来学习下处理器RouteOnAttribute,此处理器的作用是根据属性值进行路由进而来控制数据流的走向。类似于java中的if-else或者switch-case。如下图所示。

 GenerateFlowFile 产生测试数据,{"name":"Javax 小金刚","id":"2"}

JoltTransformJSON 转换json结构:{"person":{"name":"Javax 小金刚","id":"2"}}

EvaluateJsonPath 提取指定字段userId,不了解EvaluateJsonPath 可以参考上篇文章

RouteOnAttribute 根据userId属性进行路由,为了演示方便这里仅仅是判断userId=1路由到LogMessage-1,userId=2路由到LogMessage-2,其他数据路由到LogMessage-default

2、RouteOnAttribute处理器功能很明显,根据flowFile的属性进行路由,如下图所示。

Routing Strategy:路由策略,有Route to Property name(本次演示选择此路由策略) 、Route to 'matched' if all match 、Route to 'matched' if any matches 三个选项。

Route to Property name :针对一条路由规则进行控制,如userId=1时路由到LogMessage-1,相当于java中的switch-case。

Route to 'matched' if all match :针对多条路由规则进行控制,如userId=1并且name=Java小金刚路由到LogMessage-xxx,相当于java中的if(userId.equals('1')&&name.equals('Java小金刚')){print('我路由到LogMessage-xxx')}

Route to 'matched' if any matches :针对多条路由规则进行控制,如userId=1或者userId=100路由到LogMessage-kkk,相当于java中的if(userId.equals('1')||name.equals('Java小金刚')){print('我路由到LogMessage-kkk')}

点击+号进行添加路由规则​,可以添加一条或者多条。value支持el表达式,el表达式​后续专题讲解。

3、双击RouteOnAttribute和LogMessage中间的连线,配置关联关系,此时RouteOnAttribute中配置的test1、test2路由条件会在这里显示,同时还会有一个unmatched选项处理未匹配默认值。

当Routing Strategy路由策略选择Route to Property name时,test1、test2、unmatched三个选项只勾选一个。相当于switch-case,多路分支。

选择Route to 'matched' if all match 或者Route to 'matched' if any matches 之后connection 连线配置的关联选项只有matched和unmatched两个选项,如userId=1或者userId=100路由到LogMessage-kkk,相当于java中的if(userId.equals('1')||name.equals('Java小金刚')){print('我路由到LogMessage-kkk')}

4、LogMessage处理器,该处理器作用是记录日志,相当于kettle中的写日志步骤。设置比较简单,这里不做过多介绍。

 5、下图为处理器LogMessage打印的日志信息,在日志文件nifi-app.log 中查看。

标签:nifi,name,Route,userId,ETL,RouteOnAttribute,LogMessage,路由,matched
From: https://blog.csdn.net/zhangjin1222/article/details/137525466

相关文章

  • 地址治理-标准地址库动态更新ETL方案设计
    一个高质量的地址治理项目,背后必然有一份高质量的标准地址库。但是标准地址库的建设工作大量依赖人工作业,由此遗留下3大问题。首先,人工作业很多都是通过一个小区或者一个街道的扫雷式建设地址库,作业量非常大,成本非常高。关键是会产生大量项目中实际不会用到的地址。其次,人工作业......
  • ETL工具-nifi干货系列 第九讲 处理器EvaluateJsonPath,根据JsonPath提取字段
    1、其实这一节课本来按照计划一起学习RouteOnAttribute处理器(相当于java中的ifelse,switchcase控制语句),但是在学习的过程中遇到了一些问题。RouteOnAttribute需要依赖处理器EvaluateJsonPath,所以本节课我们一起来学习下EvaluateJsonPath处理器。如下图所示: 本节课的示例依然......
  • 解锁ETLCloud中Kettle的用法
    随着大数据时代的到来,数据的处理和管理成为各行各业不可或缺的一环。ETL(Extract-Transform-Load)工具作为数据处理的重要环节,扮演着将数据从源端抽取出来、经过转换处理,最终加载至目标端的关键角色。在众多ETL工具中,Kettle以其强大的功能和灵活的应用得到了广泛的应用。一、Kettle......
  • FJSP:蜣螂优化算法( Dung beetle optimizer, DBO)求解柔性作业车间调度问题(FJSP),提供MAT
    一、柔性作业车间调度问题柔性作业车间调度问题(FlexibleJobShopSchedulingProblem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成,每个工序需要在特定的机器上完成。同时,每个机器一次只能处理一个工序,且每个工......
  • MPAndroidChart setLabelRotationAngle bug
    MPAndroidChartsetLabelRotationAnglebug(应该包括其他关于修改x/ylabel的bug)库是好库,但就是不更新了。。bug描述:修改labelRotationAngle(setLabelRotationAngle()),手势缩放一下视图,才触发自动调整视图,会导致图表大小发生变化。用起来就是,第一次显示,label被截断,必须手动缩放一......
  • ETL工具之datax
    一、datax介绍DataX是由阿里巴巴集团开发的开源数据同步工具,用于实现大数据集群内数据的离线同步。它主要用于数据仓库的数据导入和导出,如将关系型数据库中的数据导入到Hadoop集群中,或者将Hadoop集群中的数据导出到关系型数据库中。DataX的主要特点包括:可扩展性:DataX支持多......
  • ETL工具-nifi干货系列 第八讲 处理器PutDatabaseRecord 写数据库(详细)
    1、本节通过一个小例子来讲解下处理器PutDatabaseRecord,该处理器的作用是将数据写入数据库。如下流程通过处理器GenerateFlowFile生成数据,然后通过处理器JoltTransformJSON转换结构,最后通过处理器PutDatabaseRecord将数据写入数据库。如下图所示 2、处理器GenerateFlowFile......
  • kettle从入门到精通 第五十一课 ETL之kettle Avro input
    1、我们在学习nifi的过程中有接触到Avroschema,当时我在想kettle应该也支持Avro,果不其然kettle也是支持Avro文件的读和写的。今天我们一起来学习下kettle中如何使用Avroinput读步骤。对Avro不了解的,可以学习文章ETL工具-nifi干货系列第四讲Avroschema序列化框架。打开spoo......
  • Cisco Unified Communications Manager (CallManager) 15.0 SU1 - 统一通信与协作
    CiscoUnifiedCommunicationsManager(CallManager)15.0SU1-统一通信与协作思科统一通信管理器(CallManager)请访问原文链接:https://sysin.org/blog/cisco-ucm-15/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科统一通信管理器企业统一通信和协作借助......
  • ETL工具-nifi干货系列 第七讲 处理器JoltTransformJSON(续)
    第六讲教程只简单介绍了Jolt的chain转换模式,本节课介绍下Jolt的各种转换模式。点击的处理器JoltTransformJSON高级配置选项,进行测试Jolt的转换模式。 1、Cardinality:更改了输入JSON数据元素的基数,适用于jsonObj和jsonList之间的转换。list转为obj input{"review......