这个问题说明了一切。我怎样才能做以下事情之一:
我有一个NIFI集群和一个自编写的专用处理器,它通过JDBC将大量数据加载到数据库中(每秒最多20Mio行)。它使用了一些特定于数据库供应商的调优技巧,在我的特定情况下非常快。其中一个技巧需要为每个连接加载一个独占的空表。
目前,我的处理器在NIFI-Cluster中为每个节点打开一个连接(它从DBCPConnectionPool
获取连接)。在群集中有大约90-100个节点,我可以获得90-100个连接 - 所有这些连接都是同时批量加载数据。
我使用的是NIFI 1.3.0.0
非常感谢任何帮助或评论。很抱歉没有显示任何代码。大约有700行没有真正帮助解决这个问题。但我打算把它放在Git上,作为开源项目Kylo的一部分。
答案 0 :(得分:4)
在NiFi中分解任务的常用方法是将流文件拆分为主节点上的多个文件。然后其他节点将拉出其中一个流文件并进行处理。
在您的情况下,每个文件都包含从表中提取的一系列值。让我们说你有一百行,只想要3个节点来提取数据。因此,您要创建3个流文件,每个文件都有不同的属性值:
然后,节点将从远程进程组或队列(例如JMS或SQS)中获取流文件。只有3个流文件,因此从连接加载数据不超过3个节点。