【发布时间】:2019-12-09 03:08:17
【问题描述】:
ListFile 处理器未检测到对先前处理的文件的任何更改并重新处理它。仅供参考,我已经尝试了以下选项进行重新处理,只有最后提到的 hack 有效。这是在我的开发环境中运行的单节点 NiFi 中。
- 更新场景:ListFile 处理器未检测到文件内容更改并在更新后自动触发(即使用 VIM 编辑器更新文件)
- 时间戳修改方案:使用
touch -c命令更改文件时间戳会更改文件时间戳,但这也不会导致ListFile 处理器的自动触发。 - 启停场景:NiFi 中的整个进程组在如上所述更改文件后启停也不会触发 ListFile 处理器。
- 等待子句:文件更改后等待足够长的时间也无济于事 - 以防我们假设它会在延迟后自动触发。
-
HACK:我能够触发 ListFile 处理器重新处理文件的唯一方法是以无害的幂等方式更改 ListFile 处理器中“文件过滤器”的通配符表达式,例如从
.*test.*\.csv到test.*\.csv稍后反之亦然(即像这样来回反复重新处理)。
重新处理具有相同旧名称和修改数据的文件是我们的要求。请帮忙!
如果上游/下游出现意外数据问题,有时甚至可能需要对未修改的文件进行强制重新处理。请帮忙!
更新
仍然面临这种零星的行为!当 ListFile 处理器无法响应文件更改时,只有重新启动 NiFi 会有所帮助。
【问题讨论】:
-
尝试确保
ListFile处理器具有以下配置:Minimum File Age=0 sec、Maximum File Age is empty、Minimum File Size=0B、Maximum File Size is empty。 -
您能否展示一下您的
ListFile配置?您使用的是哪个版本的 NiFi? -
你使用什么版本的 NiFi?我刚刚在 1.5.0 中检查过它,它工作正常。
-
@JagrutSharma - 最小/最大属性保留为默认值,与您提到的匹配(最小文件年龄=0 秒,最大文件年龄为空,最小文件大小=0B,最大文件大小是空的)。
-
也许处理器维护的时间戳搞砸了……你试过清除它的状态吗?此选项在 ListFile 运行时被禁用。停止处理器 -> 右键单击 -> 查看状态 -> 清除状态。一旦处理器再次启动,所有匹配的文件都应该被拾取,无论这些文件是否已经被处理。
标签: apache-nifi