Nifi的多重流

d80*_*tb7 1 apache-nifi

我们有多个(50+)nifi流,它们基本上都具有相同的作用:从db中提取一些数据,将一些列转换为conquet并上载到hdfs。它们仅在细节方面有所不同,例如要运行的sql查询或它们在hdfs中的位置。

问题是如何将这些常见nifi流量排除在外,以使对通用流所做的任何更改都自动应用于所有所有派生流。例如,如果我想添加一个额外的步骤以将数据也发布到Kafka,我想进行一次设置并自动将其应用于所有50个流。

我们试图使它与nifi注册表一起使用,但是似乎不完美。本质上,问题在于nifi注册表似乎可以很好地在一个环境中(例如wat)更新流,然后在另一个环境中(例如prod)自动更新流。一个特定的示例似乎不太适合在同一环境中更新多个流,每次重新部署时,它将每个流的名称重置为模板名称,这意味着所有流最终都具有相同的名称!

没有人知道应该如何处理像我们这样的情况吗?猜测这一定很普遍。

Siv*_*man 5

Apache NiFi有ProcessorGroups。顾名思义,处理器组可以将一组处理器及其执行相似任务的管道组合在一起。

因此,对于您的情况,您可以做的是,可以通过将可在不同管道中重复使用的通用流程移动到具有输入端口的单独处理器组中,来重构流程。通过连接到可重用处理器组的输入端口,连接依赖于此可重用流的外部流。根据您的要求,您还可以在此处理器组中创建一个输出端口,并将其与外部流连接。

附上样品:

为了便于说明,我进行了模拟流程,因此请忽略Processor所使用的类型,而应参阅为这些处理器指定的名称。

以下屏幕快照显示了我从两个不同的源中读取并分别将它们连接到两个不同的处理器,这些处理器对这些处理器进行了特定于源的更改

在此处输入图片说明

然后,将这两个流连接到内部具有可重用流的处理器组的输入端口。因此,最终上述屏幕快照中显示的两个不同流程将与一个通用的可重用流程一起工作。

在此处输入图片说明

显示可重用流程中的内容:

在此处输入图片说明

最终,输出端口output to outside将可重用的流连接到外部组件,Write to somewehere 我希望这有助于您重构复杂的流。如有任何疑问,请随时回来。