仅在另一个处理程序完成执行后,如何运行处理器?

Mar*_*gua 1 apache-nifi

我正在将一个表(200万行)从DB2迁移到SQL Server。我正在使用下一个流程:

  1. ExecuteSQL(从Db2表中选择记录)。
  2. SplitAvro(用于拆分记录。我将其配置为Output Size = 1,以控制如果一个失败的话,其余的插入就不会出现问题。
  3. PutDataBaseRecord(用于在SQL Server表中插入记录)。
  4. ExecuteSQL(我需要调用一个存储过程,该存储过程针对PutDataBaseRecord正在处理的同一表执行更新语句)。

问题是PutDataBaseRecord完成所有记录的插入之前,第二个ExecuteSQL正在运行。

我怎样才能告诉nifi仅在另一个完成时才运行该处理器?

提前致谢!

Bry*_*nde 5

在PutDatabaseRecord之后,您可以在碎片整理模式下使用MergeContent撤消SplitAvro执行的拆分操作。这样,仅当看到所有拆分后,单个流文件才会从MergeContent中输出,这时您便知道了运行第二个ExecuteSQL的时间。