首页 > 其他分享 >ETL工具-nifi干货系列 第十一讲 处理器UpdateAttribute使用教程

ETL工具-nifi干货系列 第十一讲 处理器UpdateAttribute使用教程

时间:2024-04-14 16:44:34浏览次数:29  
标签:nifi 删除 flowfile FlowFile 处理器 UpdateAttribute 所示 ETL 属性

1、在这里我们重温下nifi里面一个重要的概念FlowFile,如下图所示:

FlowFile:FlowFile代表NiFi中的单个数据。nifi数据流中流动的就是flowfile,每个nifi处理器处理的数据也是基于flowfile的。

FlowFile由两个组件组成:FlowFile属性(attribute)和FlowFile内容(content)。内容是FlowFile表示的数据。属性是提供有关数据的信息或上下文的特征,它们由键值对组成。所有FlowFiles都具有以下标准属性:

  • uuid:一个通用唯一标识符,用于区分FlowFile与系统中的其他FlowFiles。

  • filename:在将数据存储到磁盘或外部服务时可以使用的可读文件名

  • path:在将数据存储到磁盘或外部服务时可以使用的分层结构值,以便数据不存储在单个目录中

flowfile除了自身默认的标准属性外,用户还可以自定义属性,自定义属性的用途很多,如上节课讲的RouteOnAttribute就用到了自定义属性。

2、处理器UpdateAttribute,该处理器的作用根据名字就可以看出来,就是为了更新flowFile的属性存在的,如下图所示:

 Delete Attributes Expression:正则匹配的属性将从 FlowFiles 文件中删除。属性无论是否由此处理器更新,匹配的现有属性都将被删除。

删除属性Value值用法如下(概括下来就是支持精确匹配和模糊匹配删除):

lastUser - 将删除名称为 "lastUser" 的属性。
user.* - 将删除以 "user" 开头的属性,例如 "username"、"userName"、"userID" 和 "users"。但不会删除 "User" 或 "localuser"。
(user.*|host.*|.*Date) - 将删除 "user"、"username"、"userName"、"hostInfo"、"hosts" 和 "updateDate",但不会删除 "User"、"HOST"、"update" 或 "updatedate"。

 Store State:选择是否存储状态,有Do not store state和Store state locally两个选项。选择 “无状态” 将提供纯粹在无状态方式下更新流文件属性的默认功能。选择有状态的选项将不仅存储流文件上的属性,还会存储在处理器的状态中。(也就是说无状态仅仅基于当前flowfile进行计算,有状态是基于处理器和流经处理器的所有flowfile为基础进行计算,如计算flowfile的条数)

Stateful Variables Initial Value如果使用状态来设置/引用变量,那么此值将用于设置有状态变量的初始值。仅在状态不包含变量值时,此值将在 @OnScheduled 方法中使用。如果以有状态方式运行,则需要此值,但如果需要,可以为空。

Cache Value Lookup Cache Size:指定应在缓存中存储多少个规范查找值。

3、示例:新增不存在属性,新增一个动态属性myNickName为king,如下图所示

 

 查看数据溯源信息可知flowFile属性中多了一个myNickName属性,与此同时查看LogMessage处理器的溯源信息依然可以看到myNickName。

 

4、示例:新增存在属性,新增一个动态属性filename为${filename}.flowfile,如下图所示

 

 点击运行,然后查看溯源信息,此时filename已经发生了变更,如下图所示:

 5、示例:高级用法 存储状态,记录通过该处理器的数据流总和,如下图所示:

 

 点击运行,然后查看溯源信息,此时myCount值已经进行统计,如下图所示:

 6、高级用法,添加规则条件,符合条件时update指定的属性值,如下图所示:

 

添加一个rule,如果id的值等于1,就修改name的值为Java大金刚

 

 

 

 

标签:nifi,删除,flowfile,FlowFile,处理器,UpdateAttribute,所示,ETL,属性
From: https://www.cnblogs.com/zjBoy/p/18130055

相关文章

  • kettle从入门到精通 第五十二课 ETL之kettle Avro output
    1、上一节课我们学习了avroinput,本节课我们一起学习下avroout步骤。本节课通过jsoninput加载json文件,通过avroout生成avro二进制文件,写日志步骤打印日志。将jsoninput、avrooutput、写日志三个步骤拖到画布,然后连线,如下图所示:jsoninput步骤不在过多讲解,不了解的可以学......
  • ETL中如何运用好MQ消息集成
    一、ETL的主要作用ETL(Extract, Transform, Load)是数据仓库中的关键环节,其主要作用是将数据从源系统中抽取出来,经过转换和清洗后加载到数据仓库中。具体而言:Extract(抽取):从不同的数据源(如数据库、文件、API等)中提取数据。Transform(转换):对抽取的数据进行清洗、加工、计算等操作,......
  • 数据仓库的ELT/ETL
    ETL和ELT有很多共同点,从本质上讲,每种集成方法都可以将数据从源端抽取到数据仓库中,两者的区别在于数据在哪里进行转换。01ETLETL–抽取、转换、加载从不同的数据源抽取信息,将其转换为根据业务定义的格式,然后将其加载到其他数据库或数据仓库中。另一种ETL集成方法是反......
  • ETL工具-nifi干货系列 第十讲 处理器RouteOnAttribute(数据流路由)
    1、今天我们一起来学习下处理器RouteOnAttribute,此处理器的作用是根据属性值进行路由进而来控制数据流的走向。类似于java中的if-else或者switch-case。如下图所示。 GenerateFlowFile产生测试数据,{"name":"Javax小金刚","id":"2"}JoltTransformJSON转换json结构:{"person":......
  • 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......