Nifi!PutFile附加文件
我想知道是否有方法在nifi中使用诸如“PutFile”之类的处理器并将其写入单个文件(将数据附加到此文件或覆盖此文件中的数据)而不是创建多个不同的文件?我需要使用另一个处理器来完成这个任务吗?
Nifi!PutFile附加文件
我想知道是否有方法在nifi中使用诸如“PutFile”之类的处理器并将其写入单个文件(将数据附加到此文件或覆盖此文件中的数据)而不是创建多个不同的文件?我需要使用另一个处理器来完成这个任务吗?
当前没有办法将数据附加到文件,但可以使用PutFile覆盖文件。
PutFile处理器使用FlowFile上的属性“filename”将文件写入磁盘。因此,如果您在PutFile之前放置UpdateAttribute处理器,并将所有传入的FlowFile更新为相同的“文件名”,则PutFile处理器将在磁盘上将相同的文件名全部写入。
要使用PutFile执行此操作,请确保将处理器属性“冲突解决策略”配置为“替换”。
对不起。这是新的。让我再试一次...
LogAttribute处理器可能是一个选项,因为它似乎提供了最接近文件追加的功能。但它看起来并不理想,因为它提供了很少的指导输出的选项。
如果您打算使用“开箱即用”处理器功能而不是开发类进行自定义,还可以尝试另外两种方法。使用ExecuteScript处理器来执行Jython,Groovy或JS脚本,该脚本修改输出flowFile以仅包含所需的属性。使用PutMongo或PutSQL处理器来更新持久数据库资源。
另一种选择,如果你没有数据库资源可供选择:使用上面提到的ExecuteScript处理器,后面跟一个PutFile,它将一个唯一命名的文件名属性输出到一个目录 - 比如$ {filename}。$ { UUID}。您将得到大量类似格式的文件 - 每个文件一个日志记录 - 然后您可以将它们汇总到一个文件中,以便使用Linux命令进行分析,或者在工作流程中使用最终的ExecuteScript处理器以便每次都进行卷起通过您的工作流程处理文件。最后一个可能不是一个好主意,因为如果您的flowFiles流很高,是否会引入同步和写入争用问题尚不清楚。
谢谢!这对正在寻找“开箱即用”处理器来执行此任务的人员很有帮助,正如您在回复中提到的那样。我实际上通过创建定制处理器来解决这个问题 – BigBug