在Apache Nifi中,每个处理器之间都有连接,就像FlowFiles的队列一样,默认情况下Nifi会将FlowFile的数据内容持久化在磁盘上。这是否意味着每个这样的连接都会将FlowFiles持久化在磁盘上?如果这是真的,每次将FlowFiles从一个处理器传递到另一个处理器都意味着一个磁盘读取和写入,因此更多的处理器将导致更多的磁盘读取和写入,这反过来会降低整个吞吐量。我的理解是否正确?避免它的最佳做法是什么,在一个处理器中写入所有内容?谢谢。
NiFi内部结构有点不同!属性值在内存中持续存在,FlowFile内容在磁盘上持续存在。因此,如果处理器正在对FlowFile属性执行操作,例如UpdateAt和
,那么无需访问内容,但操作发生在内容上(数据丰富),例如ValidateRecords
,那么将涉及磁盘IO。如果您观察任何处理器,您可以看到读/写
统计信息,这告诉您发生的IO量。有关更多详细信息,请参阅此,处理器解剖。
如果您有一个需要修改属性和内容的自定义逻辑,那么您可以在一个自定义处理器中实现这两个操作!