我的用例是这样的。我有一些X表从MySQL中提取。我正在使用SplitText
拆分它们,将每个表放在一个单独的流文件中并使用GenerateTableFetch
和ExecuteSQL
进行拉动。
我希望在对所有表进行导入时收到通知或进行一些其他操作。在SplitText
文本处理器中,我已经将original
与Wait
的${filename}
关系与目标数量${fragment.count}
相关联。这将跟踪完成的表数。
但现在我无法弄清楚如何知道特定表何时完成。 GenerateTableFetch
根据分区大小将流文件分成多个。但它不会写像fragment.count这样的属性,我可以用来等待每个表。
有没有办法实现这个目标?或者,如果流中的所有流文件都已处理且没有任何内容正在处理或正在处理,那么有可能在整个流程结束时知道吗?
如果您有一个独立的NiFi实例(或者没有将集群中的流文件分发到ExecuteSQL节点),那么您可以使用QueryDatabaseTable,它(默认情况下)只会在处理整个结果集时发出所有流文件。如果所有行都进入单个流文件,则流文件已向下游传输的事实表明提取已完成。
我编写了NIFI-5601来介绍将片段。*属性添加到GTF生成的流文件的改进。