我有一个流,相当大,它需要一个csv,然后最终将它转换为sql语句(通过avro,json)。对于5GB的文件,flowfile_repo (同时处理)提高到24 GB,content_repo上升到18 GB。
有没有一种方法可以预测我需要多少空间来处理N个文件?为什么要占用这么多空间?
发布于 2016-12-19 15:41:26
默认情况下,流文件repo每2分钟检查一次,并存储每个流文件的状态以及每个流文件的属性。因此,这实际上取决于在该2分钟窗口中写入了多少流文件和每个流文件的属性,以及流文件经过多少处理器,以及有多少处理器正在修改属性。
content存储内容声明,其中每个内容声明包含一个或多个流文件的内容。定期有一个清理线程运行,并确定是否可以清除内容声明。这是基于您是否已启用存档。如果禁用了它,那么当没有活动流文件引用声明中的任何内容时,可以清除内容声明。
流文件内容也遵循写副本模式,这意味着内容是不可变的,当处理器修改内容时,它实际上是在编写一个新副本。因此,如果您有一个5GB的流文件,并且它通过一个像ReplaceText这样修改内容的处理器,它会将另一个5GB写入内容回购,而原始的一个可以根据上面关于归档的逻辑以及是否有任何流文件引用该内容来删除。
如果您对更多的信息感兴趣,这里有一篇关于这一切是如何工作的深入文档:
https://nifi.apache.org/docs/nifi-docs/html/nifi-in-depth.html
https://stackoverflow.com/questions/41225557
复制相似问题