开发者学堂课程【NiFi 知识精讲与项目实战(第二阶段):Flow File 操作2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/706/detail/12537
Flow File 操作2
进入 CsvToJson 处理器,这个处理器当中保存的就是刚才通过导入 template 文件,引入进来的处理器流程,首先要更改第一个组件,希望它可以指在主节点上,独立的去造数据,所以需要修改这个配置文件,将这个模式改为主节点独立运行,然后,希望这个组件在造数据的时候,是能够造出来是 text 文本数据,方便后续去查看数据是否正确,保存
进行运行,这个时候会发现的队列当中,已经有数据进来,
接下来可以查看队列中,这个属性输入的数据,这是可以看到已经有数据了,可以点击左侧的这个 info 按钮,然后打开的这个窗口就是 flow file 的详细内容,可以点击 view 来查看具体的信息,这里面是一个字符叫 N,也可以下载这个 flow file,
在右侧还有一个叫 attributes,这里面保存的是这个 flow file,它所包含的一些属性,刷新一下,看到有新的数据进来了,
可以点击左侧的来进行一个查看,点击第一个最新的数据来看,也是 N,看第三个,全部都是 N,也就是这个处理器,发送的都是一样的数据,将它停掉可以更改它的配置,把 unique flowfile 可以将它改为 true,这时候所创造的每一个文本文件都是唯一的,这时再来启动,然后再来查看的队列,再查看最新的一个数据,
最新的数据是 N,这个是等号,就是最新的数据是在下面,旧的数据是在上面,再来刷新看一下,现在是11,点 view,这时候变成 u 了,再来看第12个也是 u,看第13个就变成3了,但这里面有一个问题,现在虽然第一个处理器,是在单节点运行的,但是希望后续的所有流程是能够通过负载均衡,通过集群的方式,去进行消费,并行的消费,可以设置的这个队列消息,右键点击设置,然后在这里面,因为的处理器还在运行,值都不可以更改把它关掉,关闭掉以后,再来进行右键 conflict,然后再来进行编辑,现在可以去修改了,
在这个 setting 面板面板下面有一个叫做 load balance strategy,负载均衡的消费策略,默认是不进行负载均衡,可以把它修改一下,Round Robin 是负载均衡消费,而且它是通过轮巡的这样方式,去进行负载均衡,然后选完以后,后面又多出了一个选项叫 load balance compression 也就是压缩,默认不进行压缩,可以选择只压缩的属性,也可以选择属性和文本内容都进行压缩,这里选择全部都压缩,来提升一个传输的速率,点击保存,这时候会发现在这个队列当中有一个图标,这个图标的意思是正在把这个队列当中的数据进行负载均衡地分发,分发给不同的集群当中的节点,分发完之后,这个图标又会变化,这个情况,就说明已经分发完毕了。
接下来 replace text 都做了哪些操作,通过右键点击 conflict,可以在这里面看到,里面是把它的值变更了,变更了是通过正则表达式的方式去进行匹配变更的,然后会对整个文件进行一个变更,这里面的正则表达式,实际就是匹配所有的,也就是会把所有的内容全部都变更,变更成为这个 ABCD 字符串,
接下来来运行的 replace text 这个时候可以看到已经把数据处理完了,然后停掉的处理器,来查看队列中被处理以后的数据,这个时候已经有数据了,点 C,点击一个查看详情,点击,可以看到已经把它更新为了 ABCD 这样的一个字符串,也可以再查看一些其的点击,全部都改为了 ABCD 这样的一个字符串,
之后可以查看 Extract text 这个处理器所做的工作,右键点击 configuration,然后在这里面可以看到,在最下面有一个叫做 CSV 的自定义属性,这个自定义属性的内容,就是一个正则表达式,这个正则表达式就会匹配的 ABCD 中间是用逗号进行分隔,
怎么去添加新的自定义属性,可以点击右上角的这个加号,然后点了加号以后需要设置,这个属性的名称,比如叫做CSV2,点击 OK 就会提示让输入的正则表达式,比如这里面表达式就像刚才的是用点儿加来匹配的字符,通过逗号进行分隔,然后不断的以此类推,这样去写就可以把的匹配成功的数据复制,flow file 新的这个属性当中,这个属性名称就是这个自定义属性的名称,值就是正测表达式匹配而之,如果没有匹配成功的话,这个数据它就会推送到失败,也就是没有匹配到的这个流当中去关系当中。
接下来,来运行一下这个处理器,这个处理器的正则表达式正好能够匹配成功,之前的那个 ABCD 走出来,所以可以看到它全部都留到了这个 matched 的关系当中,可以把它停止一下,来打开这个关联关系,在这个关系当中,可以看到 matched 都会输送过来,
对列中数据,可以看到属性框,点击 view ,view 里面的内容和原来是一样的,可以看到有一个 CSV 这样的一个属性叫 a,然后还有 CSV1 CSV2 CSV3 CSV4分别是 ABCD,这个意思就是把之前文本里面的 ABCD,通过正则表达式匹配以后,形成了一个数组,然后把这个数组分别复制给了属性 CSV 的第一个值,第二个值和第三个第四个值,所以就会新增五个属性。