开发者学堂课程【NiFi 知识精讲与项目实战(第二阶段):Flow File 操作1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/706/detail/12536
Flow File 操作1
内容介绍:
一、理论
二、处理器对 flow file 的操作
一、理论
Flow File 拓扑内容,它一共包含了有两个部分内容,第一个部分是属性值,第二个部分是内容,
Flow File 的属性指的是这个文件的元数据信息,在这个属性当中保存了和内容有关的一些数据,
比如内容,Flow file 是什么时候创建的,从哪个处理器来的,以及到底代表了什么数据,实际的内容,保存的是flow file 当中的文本数据,比如之前用 get file 来读取实际的数据的时候读取到的文本文件里面所写的 hello word 这个文本,处理器对 flow file 的操作可以更新、添加和删除 flow file 的属性,也可以直接改变 flow file 当中的实际文本内容。
二、处理器对 flow file 的操作
有两个处理器,第一个叫 extract text,这个处理器是使用正则表达式来匹配这个 flow file 当中的内容,会把匹配成功的内容输出到它的属性当中去,如果正则表达式匹配到多个结果,默认只会取它匹配到第一个结果,匹配成功会输出到的 match 的关系里面,如果没有匹配成功这样的数据,会输入到 unmatched 的这样的一个关系里面去,Extract text 的这个处理器最重要的是自定义属性,因为它的自定义属性就决定了会添加哪些 aspect 到的服务上,它的固定属性非常多。
alphabet 处理器可以来更新留文件的属性,也可以进行删除,第一个属性就是删除属性的表达式,这个表达式主要指的就是正则表达式,可以通过正则表达式来匹配属性,然后匹配上就会进行删除。
update Attribute 这个处理器,主要应用的场景,就是用来增加、删除和修改的 flow file 属性,这个有两种方式:
第一种方式,是比较简单的方式,是默认会把每一个经过这个处理器的 flow File都去进行更新;
第二种方式会稍微高级一点,也就是可以通过一些条件来匹配,匹配到这个条件时候,才会去更新这一条 flow file,同时,这两种方式可都可以一起使用;
还有一种方式,是删除属性表达式,刚才所说的这个属性,删除也是通过正则表达式来进行删除,需要注意一点,删除表达式如果设置以后,它的优先级会比较高,比如有一个属性,flow file 有一个 alphabet 叫做 text1,这时,通过的update Attribute 的处理器,把这个 TEST1的这个属性值变更了,同时,也设置删除属性当中去匹配,包含 text 的这样的属性,这个时候会把的 text 属性直接删掉,而不会更新,也就是在后续的处理器,去接收 flow file 时候就再也看不到这个 text 的属性了,text1属性就是这个删除表达式,它的优先级会更高一些,而且,如果是新增的属性,删除表达式就没有办法把它删除掉,因为删除表达式,只能删除之前带过来的一些属性,如果在这个这个组件当中,新增加的一些属性就算删除表达式匹配成功了,也不会进行删除,因为这是后天加的属性值。