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大金刚

ETL工具-nifi干货系列 第十一讲 处理器UpdateAttribute使用教程的更多相关文章

  1. 开源ETL工具kettle系列之常见问题

    开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...

  2. 数据仓库系列之ETL过程和ETL工具

    上周因为在处理很多数据源集成的事情一直没有更新系列文章,在这周后开始规律更新.在维度建模中我们已经了解数据仓库中的维度建模方法以及基本要素,在这篇文章中我们将学习了解数据仓库的ETL过程以及实用的ET ...

  3. etl学习系列1——etl工具安装

    ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可 ...

  4. go-zero微服务实战系列(十一、大结局)

    本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看 ...

  5. ETL工具的功能和kettle如何来提供这些功能

    不多说,直接上干货! 大家会有一个疑惑,本系列博客是Kettle,那怎么扯上ETL呢? Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了 ...

  6. 【圣诞特献】Web 前端开发精华文章推荐【系列二十一】

    <Web 前端开发精华文章推荐>2013年第九期(总第二十一期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和  ...

  7. 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度

    1.阿里开源软件:DataX DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳 ...

  8. UWP 手绘视频创作工具技术分享系列 - 全新的 UWP 来画视频

    从2017年11月开始,我们开始规划和开发全新的来画Pro,在12月23日的短视频峰会上推出了预览版供参会者体验,得到了很高的评价和关注度.吸取反馈建议后,终于在2018年1月11日正式推出了全新版本 ...

  9. Maven 项目管理工具基础入门系列(二)

    一.前言 在 Maven 项目管理工具基础知识系列(一) 这篇文章中,我们已经初步了解了 Maven,也知道了使用 Maven 作为项目管理工具的好处,特别是已经知道如何快速通过 Maven 构建 W ...

  10. JVM基础系列第15讲:JDK性能监控命令

    查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...

随机推荐

  1. LLM开源小工具(基于代码库快速学习/纯shell调用LLM灵活管理系统)

    随着AI的各种信息的发展,LLM各种模型不断涌现,作为一名IT人员不得不向前走,不断探索学习发现新知识. 随着学习,也了解到一些对于模型的调用,从而解决一些问题,或者对已有工具或应用的重写.如下是两个 ...

  2. 力扣539(java)-最小时间差(中等)

    题目: 给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示. 示例 1: 输入:timePoints = [" ...

  3. [GPT] nodejs 什么情况下可以使用 import 来引入 export 的模块

    在 Node.js 中,原生并不支持 ES6 的 import 语句来引入模块. 不过从 Node.js v12 开始,通过实验性功能(--experimental-modules)可以使用 .mjs ...

  4. 什么是 objdump 命令

    objdump 是在类 Unix 操作系统上显示关于目标文件的各种信息的命令行程序. 它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息. 简单来说,和 IDA 这类软件都可用于反汇编. ...

  5. IIncrementalGenerator 增量 Source Generator 生成代码入门 从语法到语义 获取类型完全限定名

    本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何从语法分析过程,将获取的语法 Token 转换到语义分析上,比如获取类 ...

  6. 内网隧道利器Pritunl

    一.简介 pritunl是分布式企业内网服务器安全工具,具备web管理界面,有开源版本和收费版本,开源版本功能受限,一般小公司用免费版本就够用了 #官方网站 https://pritunl.com/ ...

  7. SpringBoot获取Bean的工具类

    1.beanName 默认是类名首字母小写 下面的类:beanName = bean1 @Component public class Bean1 { public String getBean1() ...

  8. 聊聊流言协议(Gossip)

    什么是流言协议? 在分布式系统中,以下两个是典型的问题: 维护系统状态(节点的活跃性) 节点间的通信 解决这些问题的解决方案之一如下: 集中式状态管理服务 对等状态管理服务 集中式状态管理服务 像 A ...

  9. 14、web 中间件加固-Tomcat 加固

    1.用户配置 如果不需要控制台管理,请更改控制台用户文件注销账号信息:如果需要,请更改账户信息 修改 tomcat/conf/tomcat-user.xml 文件 注释或修改如下信息 <role ...

  10. CompletableFuture学习总结

    CompletableFuture 简介 在Java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通 ...