无法为storm的jdbcinsertbolt加载phoenix jdbc驱动程序

sigwle7e  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(401)

在初始化apache的storm时 JdbcInsertBolt 我出错了

java.lang.ClassCastException: 
  Cannot cast org.apache.phoenix.jdbc.PhoenixDriver to javax.sql.DataSource
at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:90)
at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:292)
at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:84)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:102)
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:71)
at org.apache.storm.jdbc.common.HikariCPConnectionProvider.prepare(HikariCPConnectionProvider.java:53)
at org.apache.storm.jdbc.mapper.SimpleJdbcMapper.<init>(SimpleJdbcMapper.java:43)

从底层 HikariCPConnectionProvider . 怎么了?
我在跟踪http://storm.apache.org/releases/1.1.2/storm-jdbc.html,以下是我基于此所做的:
我喜欢通过phoenix将apachestorm拓扑中的数据写入hbase表。为此我下载了驱动程序文件( phoenix-4.7.0.2.6.5.3003-25-client.jar )并将其添加到本地maven存储库:

mvn install:install-file 
  -Dfile=lib\phoenix-4.7.0.2.6.5.3003-25-client.jar 
  -DgroupId=org.apache.phoenix 
  -DartifactId=phoenix-jdbc -Dversion=4.7.0 -Dpackaging=jar

之后我更新了我的 .pom :

<dependency>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix-jdbc</artifactId>
    <version>4.7.0</version>
</dependency>

现在添加storm的jdbc螺栓:

<dependency>
    <groupId>org.apache.storm</groupId>
    <artifactId>storm-jdbc</artifactId>
    <version>1.2.2</version>
    <scope>provided</scope>
</dependency>

我已经准备好用螺栓了。第一:设置连接提供程序:

Map hikariConfigMap = new HashMap();
hikariConfigMap.put("dataSourceClassName", "org.apache.phoenix.jdbc.PhoenixDriver");
hikariConfigMap.put("dataSource.url", "<zookeeperQuorumURI>:2181:/hbase-unsecure");
this.connectionProvider = new HikariCPConnectionProvider(hikariConfigMap);

现在将元组值初始化为db columns mapper

this.simpleJdbcMapper = new SimpleJdbcMapper(this.tablename, connectionProvider);

在此期间,会发生上述错误。
只是为了完整性 JdbcInsertBolt 创建方式如下:

new JdbcInsertBolt(this.connectionProvider, this.simpleJdbcMapper)
        .withTableName(this.tablename)
        .withQueryTimeoutSecs(30);
ni65a41a

ni65a41a1#

你试过设置:
driverclassname->org.apache.phoenix.jdbc.phoenixdriver。当前的代码似乎设置了datasourceclassname,我想这是不同的
引用此

相关问题