开发者学堂课程【NiFi 知识精讲与项目实战(第一阶段):应用场景1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/705/detail/12515
应用场景1
内容介绍
一、应用场景
一、应用场景
1.第一个场景是添加和配置处理器
(1)添加处理器:
在菜单栏中将 process 拖到面板进行搜索即可。
(2)设置处理器名称:
通过右键 config 打开面板,在设置面板中修改处理器名称,一般有多个相同类型处理器时,需要修改名称,保证名称不重复,其次是可以保证可读性、易读性。
(3)设置 properties:
每一个处理器,properties 选项不同。getfile 处理器选项如下:
Name | Default value | Allowable values | Description |
Lnput Directory (输入目录) |
要从中提取文件的输入目录<br/> 支持表达式语言:true(仅使用变量注册表进行评估) |
||
File Filter(文件过滤器) | [^.].* | 仅选择名称与给定正则表达式匹配的文件 |
|
Path Filter(路径过滤器) |
如果"递归子目录"为 true,则仅扫描其路径与给定正则表达式匹配的子目录 | ||
Batch Size(批量大小) | 10 |
每次迭代中提取的最大文件数 |
|
Keep sourceFile(保留源文件) | fsles |
Ture false |
如果为 true,则将文件复制到内容存储库后不会蒯除该文件;这会导致文件不断被拾取,对于测试目的很有用。如果没有保留原始NiFi,则需要从其提取目录中具有写权限,否则它将忽略该文件。 |
Recurse subdirectories(递归子目录) |
True | True false | 指示是否从子目录中提取文件 |
Polling lnterval(轮询间隔) | 0 sec | 指示执行目录列表之前要等待多长时间 | |
lgnore HiddenFiles(忽略隐藏文 | true | True false | 指示是否应忽略隐藏文件 |
Minimum FileAge(最小档案年龄) | 0 sec | 档字必须被拉出的最小年龄;小于此时间(根据上次修改日期)的任何文件将被忽略 | |
Maximum FileAge(最长文件年龄) | 档案必须被拉出的最大年龄;任何超过此时间(根据上次修改日期)的文件将被忽略 | ||
Minimum Filesize(最小档案大小) |
0B | 档案必须达到的最小大小 | |
Maximum FileSize(最大档案大小) | 可以拉出文件的最大大小 |
官方文档中保存了所有属性,可以通过搜索进行查看。
1.input directory。在操作时就需要进行设置,设置的目的主要是告诉 NiFi 处理器从哪一个目录读取所需要的文件。 2.Fire filter,文件过滤器,根据该设置项中配置的正则表达式来匹配文件名,如果匹配成功就会读取,否则不再读取。默认是所有文件都会读取。
3.path filter,路径过滤器,路径过滤器的主要作用就是在读取子目录时文件下,还有一些子文件,就需要使用所配置的正则表达式进行匹配,匹配成功才会进行读取,且有一个前提条件就是 DV 字母选项设置为 true。
4.Batch size,就是批处理的大小,默认值是10,每一次读取文件的时候,读取多少个文件,默认值是10个文件。根据具体的服务器配置,可以进行修改。
5.keep sauce file,也就是保留原文件,如果选择为 true,那么读取文件时,会把原文件的文件信息保存到内容存储库当中,并且不会删除。这会导致文件不断地被失去,不断地存储,对于测试来说有用,但是在生产环境中,不断增加数据,会导致磁盘不够用,占用大量的磁盘空间。设置为 true 之后,没有保留原始的 NiFi,可能是目录当中 NiFi没有写权限,没有权限,将忽略文件的写入,默认是 false,也就是说默认情况下不会保留原文件信息。
6.resource Subdirectories,是否读取递归子目录,和 path filter 相匹配,没有加黑证明不是非必填的,加黑的都是必填的,当递归子目录选项,选择是false时填就没有作用了,就可以不用填,所以说不是必填项,但是如果当为 true时,此时就需要填写,默认所有都递归。
7.Poling Interval,也就是轮循间隔,主要指目录列表读取的时候,要等待多长时间,也就是读取间隔。默认是0秒。 8.Ignore Hidden Files 忽略隐藏文件,默认是 true,如果是 true,一些隐藏文件就不会进行读取,如果设置为false,所有的文件,包含隐藏文件都会被读取出来。
9.最小档案年龄,意思就是档案必须被拉出的最小年龄,如果小于这个年龄的时间就会被忽略掉,不再进行读取,默认是零,也就是说所有都会进行读取。如果设置为1小时,那么这个档案在小于一小时的时间内不会再被读取。只会读取一个小时之后的数据。
10.Maximumfile,最长文件年龄,与最小档案年龄相对应。是指被拉出的最大年龄,如果超过这个时间就会被忽略。例如设置为1小时。那么如果文件。存入时间超过了一小时。这个文件就会被忽略。如果比一小时小,也就是一小时之前的数据就会被拉取出来。最长文件年龄是非必选项。最小是必选项。
11.最小档案大小,默认是0B,档案必须满足这个大小以后,才会去进行录取,如果小于这个大小,就不再进行录取,0B就是全部都读,不可能存在文件大小小于0B。最大档案的大小,和最小档案相匹配,可以拉出文件的最大的文件大小,例如设置的是100兆,如果有一些文件大于100兆,就会被忽略掉,不再去读取特大文件。
以上就是 get file 的属性。在动图中只需要设置的一个属性即可,因为其他属性没有过多业务要求,直接使用默认值即可满足测试需要。以上就是 get file 的创建。创建之后,会发现处理器会有 warn 提示信息。该提示信息可以进行针对性处理。
(4)演示如下:
打开 NiFi 界面之后,第一步是拖动 processor,创建一个处理器。
点击 ADD,进行添加。 添加之后设置处理器名称和属性。首先设置名称:
名称默认是 type,为了避免名称重复,可以修改名称 pick up:
此时处理器的名称已经发生改变:
修改完处理器名称之后,可以进行配置属性:点击 config- properties 进行设置:
还可以通过双击处理器也可以打开配置页面。还有一种方法是点击左侧设置按钮,也可以进入处理器的设置页面。在设计页面当中可以设置读取文件目录:
/export/temp/ source
点击 OK 之后,可以将该目录下所有文件读取出来,读到 flowfilw 当中,设置完属性之后,有一个感叹号,鼠标移动到感叹号以后,会发现有提示的错误信息:
错误不解决,就没有办法执行,第一个错误:
'Input Directory' validated against '/export/tmp/source' is invalid because Directory does not exist
表示所配置的文件目录不存在。解决方法就是创建该目录。先复制文件路径,进入 Nifi 服务器。通过命令来创建,首先查看目录是否不存在:
[ root@locathost Logs]# cd /export/ tmp/ source
确认不存在之后。先进入到 tmp 目录下,查看到 tmp 目录下没有 source 目录,所以可以将其创建出来。如果没有tmp 目录,可以将两个都一起创建出来:
[ root@localhost export]# mkdir -p /export/tmp/ source
如果这三个目录都没有,会把这三个目录全部都创建出来。
如果不加-p,就会报错,就只能一个一个进行创建。
创建完毕之后,进入 tmp 目录,发现 source 目录已经创建好。此时返回面板,右键 refresh 刷新界面,将鼠标移动到处理器感叹号上,此时错误,只剩下一个:
'Relationship success' is invalid because Relationship 'success' is not connected to
该错误涉及到关联关系,打开 setting,右侧就是关联关系:
只有一个叫 success ,如果没有任何连接的目的地时,就会报感叹号。此时不必着急,因为之后会添加新的处理器。