'DBCPConnectionPool'服务不接受存储在属性中的值

时间:2018-04-10 06:28:30

标签: minify apache-nifi hortonworks-data-platform hortonworks-dataflow

以下是我正在使用的处理器组合: -

GetFile + SplitText + ExtractText + UpdateAttribute + ExecuteSQL + ConvertAvroToJson + PutFile 

基本上,我有一个属性文件,其中包含5个逗号分隔值,“DBCPConnectionPool”控制器服务需要这些值来建立与数据库的连接。以下是我的属性文件的内容: -

jdbc:mysql://localhost:3306/test,com.mysql.jdbc.Driver,C:\Program Files\MySQL\mysql-connector.jar,root,root

现在,我从这个属性文件中提取值并将它们存储在手动创建的属性中。我正在使用此正则表达式使用ExtractText将这些值存储到属性中。

ExtractedData: (.*)

然后使用updateAttribute处理器手动添加5个属性,并从属性文件中获取它们的值,如下所示:

connectionURL  : ${ExtractedData:getDelimitedField(1)}
driverClass    : ${ExtractedData:getDelimitedField(2)}
driverLocation : ${ExtractedData:getDelimitedField(3)}
user           : ${ExtractedData:getDelimitedField(4)}
password       : ${ExtractedData:getDelimitedField(5)}

因此,到目前为止,属性已从属性文件获取其值,因此遵循存储在其中的值:

connectionURL  : jdbc:mysql://localhost:3306/test
driverClass    : com.mysql.jdbc.Driver
driverLocation : C:\Program Files\MySQL\mysql-connector.jar
user           : root
password       : root

最后,这是我想要实现的目标。我试图在DBCPConnectionPool控制器服务中使用以上5个属性,如下所示:

 Database Connection URL     : ${connectionURL}
 Database Driver Class       : ${driverClass}
 Database Driver Location(s) : ${driverLocation}
 Database User               : ${user}
 Password                    : ${password}

但我无法建立连接,我收到错误'无法创建PoolableConnectionFactory'。似乎控制器服务无法从属性中读取值。如何将flowfile属性传递给控制器​​服务?

1 个答案:

答案 0 :(得分:2)

'DBCPConnectionPool' Service Not accepting values stored in attributes

那不是问题。这是一个特色)

连接到在控制器服务启动时建立的数据库,而不是传递给dbcp处理器的流文件。