首页 > 其他分享 >ETL工具-nifi干货系列 第十讲 处理器RouteOnAttribute(数据流路由)

ETL工具-nifi干货系列 第十讲 处理器RouteOnAttribute(数据流路由)

时间:2024-04-09 18:33:45浏览次数:14  
标签: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://www.cnblogs.com/zjBoy/p/18122245

相关文章

  • ETL中Python组件的运用
    Python是一种高级、通用、解释型编程语言,以简洁、易读、易学的语法而闻名,被广泛应用于Web开发、数据科学、人工智能、自动化脚本等领域。 python的特点包含易读易学:Python的语法设计简洁清晰,类似英语,使得代码易读易懂,降低了学习门槛。动态类型:Python是一种动态类型语言,不需......
  • C++使用getline实现split的效果
    0.问题C++中并没有类似split的分隔符函数,如何自建一个呢?我们考虑使用getline来实现所需功能。1.代码#include<iostream>#include<string>#include<vector>#include<sstream>//使用字符串流将字符串分割成多个子串,并存储到vector中std::vector<std::string>split......
  • ETL工具-nifi干货系列 第十讲 处理器RouteOnAttribute使用教程,方便灵活控制数据流向
    1、今天我们一起来学习下处理器RouteOnAttribute,此处理器的作用是根据属性值进行路由进而来控制数据流的走向。类似于java中的if-else或者switch-case。如下图所示。 GenerateFlowFile产生测试数据,{"name":"Javax小金刚","id":"2"}JoltTransformJSON转换json结构:{"pers......
  • 地址治理-标准地址库动态更新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......