Apache NiFi运行无下游连接的GetFile处理器后文件消失相关问题
现象产生原因
GetFile处理器的默认工作逻辑为:成功将源目录的文件读取为NiFi内部的FlowFile对象后,就会自动删除源目录内的原文件。该操作和是否连接下游处理器无关,只要文件读取动作完成就会触发删除。
如果你启动处理器时收到了「出站关系未连接、FlowFile会被终止」的提示仍选择确认启动,那么读取生成的FlowFile会被直接清理。
消失的文件去向
分两种情况:
- 如果你没有确认终止未连接关系的FlowFile,只是暂时没有接下游处理器:文件的完整内容已经被转存到NiFi的**内容仓库(Content Repository)**中,对应的FlowFile暂存在
GetFile的出站队列里,未被清理前内容不会丢失。 - 如果你已经确认允许终止未连接关系的FlowFile:读取生成的FlowFile会被NiFi自动清理,对应的内容如果没有被内容仓库的回收机制覆盖,还有找回可能,否则直接丢失。
文件找回方案
- 若当前未重启NiFi、也未确认终止未连接的FlowFile,
GetFile的出站队列中还能看到待处理的FlowFile:直接给GetFile的success关系连接PutFile处理器,配置PutFile的目标输出目录后,同时启动两个处理器,队列内的FlowFile就会被写入到目标目录,完成文件恢复。 - 若已经确认终止了FlowFile,但未触发NiFi内容仓库的磁盘空间回收:可前往NiFi安装路径下的内容仓库目录,根据文件大小、写入时间匹配找回原文件,该操作要求熟悉NiFi的存储规则,新手不建议尝试。
- 若已经触发内容仓库的空间回收、或重启NiFi后丢失了对应文件的元数据:文件无法从NiFi中找回,只能通过源文件的其他备份恢复。
小提示:后续测试流程时,可以先将
GetFile的Keep Source File属性设置为true,确认流程跑通无问题后再改回默认的删除配置,避免误删源文件。
内容的提问来源于stack exchange,提问作者sanchit08
相关产品推荐
相关产品推荐

