如何在apache nifi中按文件内容在单独的流文件中拆分文本文件?

时间:2018-02-27 10:44:09

标签: apache-nifi

我正在使用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为读者,但是我不能通过简单输出纯文本来让任何作家工作。

1 个答案:

答案 0 :(得分:1)

SplitContent处理器正在寻找我正在寻找的东西。它允许我指定一个(文本)字节序列,并为遇到的每个拆分序列生成一个新的FlowFile。

可以使用RouteText处理器排除垃圾行,该处理器配置了一个自定义属性,该属性包含与所需行匹配的正则表达式。