代码之家  ›  专栏  ›  技术社区  ›  pfnuesel

在GenerateTableFetch处理器中手动设置“组件状态”

  •  0
  • pfnuesel  · 技术社区  · 4 年前

    var Scope = Java.type('org.apache.nifi.components.state.Scope');
    var map = context.stateManager.getState(Scope.LOCAL).toMap();
    

    但我没有找到可循环的地图。我不明白的是如何选择GenerateTableFetch处理器来设置状态。

    0 回复  |  直到 4 年前
        1
  •  2
  •   Bryan Bende    4 年前

    StateManager只允许组件访问它自己的状态,而不是另一个组件的状态,否则任何组件都可能错误地更改另一个组件的状态。

    在后台,使用组件的UUID存储状态。如果您在集群中,那么它将存储在ZooKeeper中,您可以使用ZK CLI在ZooKeeper中手动修改数据。如果您是独立的,那么它将存储在state/local的预写日志中,我不确定是否有一个好的方法来手动修改它。

    另外,在将流迁移到新集群时,首选机制是使用nifi工具箱中的ZK state migrator:

    https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#zookeeper_migrator