除了如何为Apache自动化DBCPConnectionPool Controller服务?

问题描述 投票:2回答:2

我是Apache NiFi的新手,我的基本任务是使用Apache Nifi将数据从多个数据库源摄取到HDFS。我使用'DBCPConnectionPool'控制器服务进行数据库连接池服务,我需要提供诸如“数据库连接URL”,“数据库驱动程序类名”,“数据库驱动程序位置”,“数据库用户”,“密码”等信息。现在,由于我从多个数据源中摄取,因此每次源数据库更改时我都需要手动更改上述所有信息。我正在寻找一种方法,以便我们可以自动执行此任务。例如,'DBCPConnectionPool'控制器服务应该能够根据源数据库动态获取'数据库连接URL','数据库驱动程序类名'和其他信息。

apache apache-nifi hortonworks-data-platform hortonworks-dataflow apache-minifi
2个回答
2
投票

@ Rishab Prasad,

NiFi支持RestAPI以动态更改值“DBCPConnectionPool”属性。

请检查以下参考,但为此您需要在所需的处理器中创建空控制器服务。

https://nifi.apache.org/docs/nifi-docs/rest-api/index.html

如果您创建了空控制器服务,那么具有单独的ID。在上面的api api的帮助下更新控制器服务,你可以动态地改变它的值。

这是动态更改DBCP连接池的唯一方法。

否则,您需要更改nifi源以满足您的要求。


0
投票

您应该创建一个DBCPConnectionPool查找控制器,

来自Nifi的文档:

提供可用于动态选择另一个DBCPService的DBCPService。此服务需要在请求连接时传入名为“database.name”的属性,如果缺少该属性,则会抛出异常。 'database.name'的值将用于选择已使用该名称注册的DBCPService。这将允许定义和注册多个DBCPServices,然后通过使用适当的“database.name”属性标记流文件,在运行时动态选择。

我们的想法是为每个数据库建立一个DBCPConnectionPool,并使用DBCPConnectionPoolLookup引用它们。

因此,一旦设置完成,您只需要从流文件中更改database.name属性,即使用UpdateAttribute

REST不是这里的方法,除非需要特定的操作,因为你必须跟踪处理器的ID并且你必须管理你的DBCPConnectionPool的重新启动,这导致你的REST客户端的不必要的开发/脚本。

© www.soinside.com 2019 - 2024. All rights reserved.