apache-nifi - 如何等待GenerateTableFetch查询完成

标签 apache-nifi hortonworks-data-platform hortonworks-dataflow

我的用例是这样的。我有一些 X 表要从 MySQL 中提取。我使用 SplitText 拆分它们,将每个表放入单独的流文件中,并使用 GenerateTableFetchExecuteSQL 进行拉取。

当所有表的导入完成时,我希望收到通知或采取其他操作。在 SplitText 文本处理器中,我已将 original 关系路由到 ${filename} 上的 Wait,目标计数 ${fragment.count}。这将跟踪完成了多少张表。

但现在我无法弄清楚如何知道特定表何时完成。 GenerateTableFetch 根据分区大小将流文件分成多个。但它不会写入像fragment.count这样的属性,我可以用它来等待每个表。

有什么办法可以实现这个目标吗?或者也许有一种方法可以在整个流程结束时知道流程中的所有流程文件是否已被处理并且没有任何内容在队列中或正在处理?

最佳答案

如果您有一个独立的 NiFi 实例(或者没有将流文件在集群之间分发到 ExecuteSQL 节点),那么您可以使用 QueryDatabaseTable 代替,它(默认情况下)只会在整个结果集时发出所有流文件已处理。如果您将所有行都放入单个流文件中,则流文件已向下游传输这一事实表明提取已完成。

我写了NIFI-5601涵盖向 GTF 生成的流文件添加fragment.* 属性的改进。

关于apache-nifi - 如何等待GenerateTableFetch查询完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346994/

相关文章:

jms - 尼菲 : How can I change message format from MQHRF2 to MQSTR in PublishJMS?

hive - 无法加载 Avro 格式的推文数据

hadoop - 在 ambari 集群安装向导中选择公共(public)仓库

hadoop - 为什么默认的hdfs block 大小设置为134.2 mb(大约)

kerberos - NIFI - 如何连接到启用 Kerberos 的 KUDU

java - NiFi - 更新处理器中的 Luwak (Lucene) 索引

hortonworks-data-platform - wget + 下载 ambari tar ball

apache-nifi - NiFi : content_repository is full despite settings in the nifi.属性

apache-nifi - nifi中JVM运行内存不足异常

apache - 如何从文件中动态读取updateAttribute 中属性的值?