Nifi04 属性
Posted DATA数据猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nifi04 属性相关的知识,希望对你有一定的参考价值。
Nifi属性
1 使用属性
每个FlowFile都拥有多个属性,这些属性在FlowFile的生命周期中发生了变化。FlowFile的概念非常强大,并提供三个主要优点:
- 第一个,允许用户在流中做路由决策,以满足某些条件的FlowFiles可以与其他FlowFiles进行不同的处理。这可以通过RouteOnAttribute和其他类似的处理器实现。
- 第二个,利用属性配置处理器:处理器的配置依赖于数据本身。例如:PutFile能够使用Attributes来知道每个FlowFiles的存储位置,而每个FlowFile的目录和文件名属性可能不同(结合表达式语言,比如每个流都有FileName属性,组件中就可以这样配置文件名:$filename,就可以获得当前FlowFile中filename的属性值)。
- 第三个,属性提供了有关数据的极有价值的上下文。在查看FlowFile的Provenance数据时非常有用,允许用户搜索符合特定条件的Provenance数据,并且还允许用户在检查Provenance时间的详细信息时查看上下文。通过简单的浏览该上下文用户能够知道为什么以这样或者那样的方式处理数据。
2 共同属性
每个FlowFile都有一组属性:
- filename: 可用于将数据存储到本地或远程文件系统的文件名
- path: 可用于将数据存储到本地或远程文件系统的目录的名称
- uuid: 一个通用唯一标识符,用于区分FlowFile与系统中其他FlowFiles
- entryDate: FlowFile进入系统的日期和时间。此属性值是一个数字,标识自1970年1月1日午夜(UTC)以来的毫秒数。
- lineageStartDate: 任何时候克隆、合并或拆分FlowFile,都会创建子FlowFile。该值表示当前FlowFile最早的祖先进入系统的日期和时间。此属性值是一个数字,标识自1970年1月1日午夜(UTC)以来的毫秒数。
- fileSize: 此属性表示FlowFile内容占用的字节数。
3 提取属性
NiFi提供了几种不同的处理器,用于从FlowFiles中提取属性。我们在之前的处理器分类中已经提到过。这是构建自定义处理器的一个非常常见的用例,其实编写处理器是为了理解特定的数据格式,并从FlowFile的内容中提取相关信息,创建属性来保存该信息,以便可以决定如何路由或处理数据。
4 添加用户自定义的属性
Nifi除了提供能够提取特定属性的处理器外,还支持用户自定义属性。用户可以通过单机属性卡右上角的+
按钮添加新的属性。属性的值也包含表达式语言(Nifi有自己的表达式语言,可以系统的学习一下),这样就允许其他属性或添加属性。
5 属性路由
Nifi的一个强大功能是能够根据属性路由FlowFiles。执行此操作的主要机制是RouteOnAttribute。通过添加自定义属性进行配置,属性名可用于分发路由,属性值可以用来控制分发的数据。例如属性名:insert
、属性值:$type:equals('INSERT')
。
6 FlowFile拓扑:内容和属性
FlowFile包括两部分:第一个是属性:记录FlowFile的元数据,保存关于内容的信息,比如什么时候创建、从哪来、代表什么。
第二个内容:FlowFile的实际内容,比如GetFile读取数据时,读取到的实际文本。
对FlowFile的操作:
第一:更新、添加、删除FlowFile属性。
例如UpdateAttribute,该处理器使用属性表达式语言更新流文件的属性,并且/或则基于正则表达式删除属性。
第二:改变FlowFile内容。
以上是关于Nifi04 属性的主要内容,如果未能解决你的问题,请参考以下文章