需求:随机生成一些测试数据集,对生成的数据进行正则匹配,对匹配后的数据进行输出到外部文件中。以上需要用到的“GenerateFlowFile”、“ReplaceText”、“PutFile”处理器。
这个处理器可以生成随机的FlowFile数据或者生成自定义内容的FlowFile。多用于负载测试和模拟生成数据测试。
打开“GenerateFlowFile”配置,找到“PROPERTIES”选项进行配置:
关于“GenerateFileFile”的“PROPERTIES”配置选项解释如下:
配置项 | 默认值 | 允许值 | 描述 |
---|---|---|---|
File Size (文件大小) | 0 B | 生成每个FlowFile文件的大小。 | |
Batch Size (批次大小) | 1 | 每次生成几个FlowFile。 | |
Data Format (数据格式) | Text | Binary Text | 指定生成的数据是文本还是二进制文件。 |
Unique FlowFiles(唯一FlowFile) | false | true false | 如果为true,每次生成的FlowFile独一无二,如果为false,每个FlowFile随机内容相同,吞吐量大。 |
Custom Text (自定义文本) | 自定义生成文本内容。需要将“Data Format”设置为Text并且将“Unique FlowFiles”设置为false,这时生成的文件大小不定,将忽略设置的“File Size” | ||
Character Set (字符编码) | UTF-8 | 指定生成FlowFile的编码。 | |
Mime Type (mime.type值) | 设置自带属性“mime.type”的Value值。 |
“GenerateFlowFile”默认调度会不间断运行产生数据,为了方便后期测试,这里设置好“PROPERTIES”配置后,还需要配置“SCHEDULING”中“Run Schedule”,当产生数据后,每隔10s调度一次,目的是产生数据慢一些,方便后期看到结果。
“ReplaceText”处理器会替换正则表达式匹配到的FlowFile中的内容,生成新的FlowFile内容。
将接收“GenerateFlowFile”处理器生成的“hello world”数据,替换其中的“world”为“nifi”。
关于“ReplaceText”的“PROPERTIES”配置选项解释如下:
配置项 | 默认值 | 允许值 | 描述 |
---|---|---|---|
Search Value (正则匹配值) | (?s)(^.*$) | 对FlowFile内容匹配的正则表达式。仅用于“Regex Replace”和“Literal Replace”替换策略。 | |
Replacement Value(替换的值) | $1 | 使用"Replacement Strategy"策略时插入的值。$1表示正则表达式匹配的第1个值。 | |
Character Set (编码) | UTF-8 | 指定编码字符集。 | |
Maximum Buffer Size (缓冲区数据量最大值) | 1 M | 指定要缓冲的最大数据量(每个文件或每行,取决于计算模式),以便应用替换。“评估模式”如果选择了“Entire Text”,并且FlowFile大于这个值,那么FlowFile将被路由到“failure”;在“Line-by-Line”模式下,如果一行文本比这个值大,那么FlowFile将被路由到“failure”。默认值为1 MB,主要用于“Entire Text”模式。在“Line-by-Line”模式中,建议使用8 KB或16 KB这样的值。如果将“替换策略”设置为以下其中之一:Append、Prepend、Always Replace,则忽略该值。 | |
Replacement Strategy (替换策略) | Regex Replace | Prepend Append Regex Replace Literal Replace Always Replace | 指定如何替换FlowFile内容的策略。 |
Evaluation Mode(评估模式) | Line-by-Line | Line-by-Line Entire text | 对每一行单独进行"替换策略"(Line-by-Line);或将整个文件缓冲到内存中(Entire text),然后对其进行"替换策略"。 |
Line-by-Line Evaluation Mode(行的评估模式) | ALL | All First-Line Last-Line Except-First-Line Except-Last-Line | Line-by-Line“评估模式”下: (ALL)默认是对FlowFile中所有行使用“替换策略”。 (First-Line):只对第一行使用“替换策略”。 (Last-Line):只对最后一行使用“替换策略”。 (Except-First-Line):除了第一行之外使用“替换策略”。 (Except-Last-Line):除了最后一行外使用“替换策略”。 |
指定如何替换FlowFile内容的策略。 Evaluation Mode(评估模式) Line-by-Line
对每一行单独进行"替换策略"(Line-by-Line);或将整个文件缓冲到内存中(Entire text),然后对其进行"替换策略"。 Line-by-Line Evaluation Mode(行的评估模式) ALL
Line-by-Line“评估模式”下: (ALL)默认是对FlowFile中所有行使用“替换策略”。 (First-Line):只对第一行使用“替换策略”。 (Last-Line):只对最后一行使用“替换策略”。 (Except-First-Line):除了第一行之外使用“替换策略”。 (Except-Last-Line):除了最后一行外使用“替换策略”。
以上表格中“Search Value”默认值“(?s)(^.*$)”解释如下:
以上表格中“Replacement Strategy”的可用值解释如下:
关于“PutFile”处理器的创建及配置参数参照案例一,这里直接给出“PutFile”处理器的配置,将替换后的FlowFile写入外部路径中“/root/test/matchFile”:
在连接“ReplaceText”处理器与“PutFile”处理器时,需要设置连接的配置关系,当“ReplaceText”处理器将匹配成功的数据写出到“PutFile”处理器:
设置当“ReplaceText”处理器匹配失败FlowFile自动终止关系:
完整的连接关系如下:
启动“GenerateFlowFile”处理器后:
同时查看“Data Provenance”中数据如下:
启动“ReplaceText”处理器,查看处理的数据:
启动“PutFile”处理器,NiFi集群对应的每个节点上都生成对应的数据:
查看数据结果:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。