流文件被卡在队列中(按属性进行负载平衡),并且不被下一个下游处理器(带有CSVReader和CSVRecordSetWriter的MergeRecord)读取。在Nifi用户界面中,似乎流文件在队列中,但是当尝试列出队列时,它说“队列中没有流文件”。尝试清空队列也会给出确切的消息。 Nifi日志没有与处理器相关的任何例外。队列中大约有80个流文件。
我尝试了以下操作项,但都没有用:
答案 0 :(得分:0)
这可能是因为流文件的内容已删除。但是,它的条目仍存在于流文件注册表中。
如果您有经过docker化的nifi设置并且没有繁重的生产流程,则可以停止您的nifi流程并删除_ * repository文件夹(flowfile-repository,内容存储库等)中的所有内容 (前提是您已装载所有目录,并且没有其他数据丢失风险)
让我知道您是否需要进一步的帮助
答案 1 :(得分:0)
在确保没有其他队列除了阻塞队列之外没有其他流文件之后,我们使用版本1.9设置了另一个新集群并将所有流文件从旧集群迁移到新集群。将较旧的群集升级到1.9版,看看是否可以解决这些问题而不会丢失任何数据。活动结束后会更新更多。
答案 2 :(得分:0)
您的合并记录处理器仅在主节点上运行,并且可能所有文件都在其他节点上(因为您正在进行负载平衡)。 NiFi 没有足够的意识注意到下游处理器仅在主节点上运行,因此它不会自动将所有内容重新平衡到主节点。只需将 MergeRecord 更改为在所有节点上运行即可允许文件通过。
唉,我还没有找到让所有流文件都回到主节点上的方法,你可以使用“单节点”负载均衡策略来获取同一节点上的所有文件,但不一定是初级。
答案 3 :(得分:0)
您的 FlowFiles 负载平衡方式存在错误配置。要进行检查,请停止您的 MergeRecord 处理器,以便能够检查和查看队列中的内容。
在显示的模式窗口中,您可以检查流文件在哪里等待,很可能您的流文件实际上在其他节点之一上,但由于 MergeRecord 在主节点上运行,因此它没有任何内容它的队列。