我正在使用Apache NiFi 1.5.0,我需要根据内容分割传入的文件,因此不会在字节或行数上。甚至可能存在应该丢弃的行。
假设这是传入文件(START
是已知的分割点,下一行可能以不同的单词开头):
GARBAGE LINE 1234
START 53534
HIGHDATA 22
LOWDATA 885
START 1563632
HIGHDATA 252
HIGHDATA 20548
LOWDATA 240240
必须丢弃第一行,然后将内容分成两个FlowFiles。
First Flowfile:
START 53534
HIGHDATA 22
LOWDATA 885
第二个FlowFile:
START 1563632
HIGHDATA 252
HIGHDATA 20548
LOWDATA 240240
我的想法是将正则表达式应用于FlowFile内容的每一行,如果匹配当前的FlowFile结束并发送出处理器,则会创建另一个FlowFile,同时处理其余内容。
但我无法设置任何可以让我实现这一目标的组件:
RouteText
每行工作,分裂太多SplitText
根据行数或内容长度进行拆分唯一似乎做某事的处理器是SplitRecord
,其中GrokExtract
为读者,但是我不能通过简单输出纯文本来让任何作家工作。
答案 0 :(得分:1)
SplitContent处理器正在寻找我正在寻找的东西。它允许我指定一个(文本)字节序列,并为遇到的每个拆分序列生成一个新的FlowFile。
可以使用RouteText处理器排除垃圾行,该处理器配置了一个自定义属性,该属性包含与所需行匹配的正则表达式。