NiFi-1.0.0 - ExecuteSQL,事件驱动

时间:2016-11-18 20:40:25

标签: apache-nifi

我有一个NiFi流程,可以将一些数据插入到某些表格中。在我向表中插入一些数据后,我发送一个信号,然后ExecuteSQL在该表上运行聚合查询。表名基于文件名。

问题是,当ExecuteSQL运行查询时,我只获得结果的子集。如果我在数据库控制台中运行相同的查询,则会返回不同的行数。

这可能是与事件驱动的调度策略有关的问题吗?

如果ExecuteSQL停止了,我在ExecuteSQL队列中得到了流文件(信号),然后我手动启动ExecuteSQL,我就会得到预期的结果。

1 个答案:

答案 0 :(得分:2)

如果您正在运行多个插入(例如使用PutSQL)并且您希望仅在所有插入完成后运行它们,并且它们完成的顺序不确定,您可以尝试以下两种方法之一:< / p>

  • MergeContent - 在PutSQL之后使用MergeContent处理器,设置插入完成时触发的最小条目数和/或最大Bin时间。您可以将合并关系路由到ExecuteSQL。

  • MonitorActivity - 使用MonitorActivity处理器监控PutSQL的输出流,并在配置的时间段后触发非活动警报。您可以将非活动关系路由到ExecuteSQL以运行聚合查询。