我的用例是这样的。我有一些要从MySQL中提取的X表。我正在使用SplitText
拆分它们,以将每个表放在一个单独的流文件中,并使用GenerateTableFetch
和ExecuteSQL
拉。
当所有表导入完成后,我想收到通知或采取其他措施。在SplitText
的文本处理器中,我已将original
的关系路由到Wait
上的${filename}
,目标计数为${fragment.count}
。这将跟踪完成多少张表。
但是现在我无法弄清楚如何知道何时完成特定表。 GenerateTableFetch
根据分区大小将流文件分成多个文件。但是它没有编写诸如fragment.count之类的属性,我可以用它来等待每个表。
有没有办法可以做到这一点?或者,也许有一种方法可以在整个流程的末尾知道流程中的所有流程文件是否都已处理,而队列中没有任何内容或正在处理中?
答案 0 :(得分:2)
如果您有一个独立的NiFi实例(或未将流文件在群集中分配给ExecuteSQL节点),则可以改用QueryDatabaseTable,它(默认情况下)仅在整个结果集时才会发布所有流文件已处理。如果您将所有行都放入一个流文件中,那么该流文件已被传输到下游这一事实表明提取已完成。
我写了NIFI-5601来介绍在GTF生成的流文件中添加fragment。*属性的改进。
答案 1 :(得分:1)