在NiFi中安排批处理SQL

时间:2018-03-14 15:20:51

标签: apache-nifi

我使用NiFi连接2个系统:

  • 在Kafka主题中生成事件的来源
  • 目的地,我只考虑Oracle数据库。

我需要减少Kafka主题中的JSON并将它们推送到适当的表中。这样做没有什么大问题但是......源系统生成了太多事件,目标数据库触发了每个修改的进程。并且其大小不足以处理许多流程。

所以我使用PutSQL Processor + Text Processor + Update Attribute Processor背后的ReplaceText Processor在我的数据库中进行批量更新(例如:如下所示:{ {3}})。

但是这个工作流程允许我根据要放入的许多元素更新我的数据库(我的批量大小)。

我想基于时间定期批量更新。原因是源事件不是线性的,目标数据库不能接受超过5分钟"离开& #34;来自消息来源。所以我需要每隔5分钟安排一次最糟糕的更新。

我现在无法看到如何做到这一点。请问您能告诉我哪种处理器/解决方案?

PS:当然,存在大量更好的解决方案,比如不会在我的目标数据库中的每次提交中触发繁重的流程,而是改变这个"良好的旧系统"现在不负担得起。

干杯, 奥利弗

2 个答案:

答案 0 :(得分:2)

我建议串联使用WaitNotify处理器来设置一个“门”,它将流文件保存在队列中,直到Notify处理器(运行时间表为〜5分钟)发送“触发器”流文件。 Koji Kawamura写了an extensive article documenting this behavior pattern

答案 1 :(得分:1)

嗯......答案非常简单。你只需要继续"计划"处理器的标签。我现在正在运行1.6.0-SNAPSHOT(顺便说一下,看起来这个选项已经存在了很长时间......我只是没注意到它)并且它为Scheduling提供了设置Cron的能力调度。这完全满足了需求...