提问者:小点点

Nifi QueryDatabase aseTable处理器,何时重置值?


根据下面提到的文档,如果我重新启动处理器,它似乎会重置我提供的最大列值的值,并从一开始就开始获取数据。

文档链接:https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.5.0/org.apache.nifi.processors.standard.QueryDatabaseTable/index.html

以逗号分隔的列名列表。处理器将跟踪自处理器开始运行以来返回的每列的最大值。

  • 但是,我测试了这种行为,即使我重新启动处理器,我也只能获得增量负载。文档中是否有错误或遗漏了什么?
  • 如果我重新部署作业会发生什么,我的意思是删除作业并从模板中重新创建它?
  • 在代码中,它提到该值将作为SCP. CLUSTER的一部分存储。有人能向我解释一下它是什么吗?以及在什么条件下状态将被清除?

@state(范围=范围. CLUSTER,描述="在对指定表执行查询后,指定列的最大值将被保留以供将来执行查询时使用。这允许处理器""仅获取那些最大值大于保留值的记录。这可用于""增量获取,获取新添加的行等。要清除最大值,请清除处理器的状态""per the State Management留档")


共1个答案

匿名用户

一旦处理器第一次启动,它将永远不会重置它的值,除非您进入处理器的“查看状态”菜单并单击“清除状态”。

在启动和停止处理器时清除状态是没有意义的,因为一旦NiFi重新启动进行维护或崩溃,它就会重置,这是不需要的。

存储状态的位置取决于您是运行单个节点还是集群。在单个节点中,它存储在本地预写日志中,在集群中,它存储在ZooKeeper中,因此所有节点都可以在必要时访问它。无论哪种情况,它都由处理器的UUID存储。