无法使用 Impala JDBC 驱动程序通过 Java 应用程序连接到 Impala

Posted

技术标签:

【中文标题】无法使用 Impala JDBC 驱动程序通过 Java 应用程序连接到 Impala【英文标题】:Unable to connect to Impala through Java app using Impala JDBC Driver 【发布时间】:2017-01-09 16:38:50 【问题描述】:

我正在尝试连接到 impala 并使用 JdbcTemplate() 进行简单的选择查询。我不断收到以下错误:

java.sql.SQLException: [Simba][ImpalaJDBCDriver](500164) Error initialized or created transport for authentication: null.
at com.cloudera.impala.hivecommon.api.HiveServer2ClientFactory.createTransport(Unknown Source)
at com.cloudera.impala.hivecommon.api.HiveServer2ClientFactory.createClient(Unknown Source)
at com.cloudera.impala.hivecommon.core.HiveJDBCConnection.connect(Unknown Source)
at com.cloudera.impala.jdbc.common.BaseConnectionFactory.doConnect(Unknown Source)
at com.cloudera.impala.jdbc.common.AbstractDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ProcedureDAOImpl.updateProcedure(ProcedureDAOImpl.java:55)
at MainRunner.procedure1(MainRunner.java:61)
at MainRunner.run(MainRunner.java:33)
at java.util.TimerThread.mainLoop(Unknown Source)
Caused by: com.cloudera.impala.support.exceptions.GeneralException: [Simba][ImpalaJDBCDriver](500164) Error initialized or created transport for authentication: null.
... 11 more    

ApplicationContext 此连接的 bean 定义如下:

<bean id="impalaDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.cloudera.impala.jdbc4.Driver"></property>
    <property name="url" value="$jdbc.impala.url"/>
    <property name="username" value="$jdbc.impala.username"/>
    <property name="password" value="$jdbc.impala.password"/>
</bean>

我尝试连接DriverManager 类,它成功了。但是当我尝试使用 dbcp 类时,它失败了。有人对此有什么建议吗?

【问题讨论】:

更新:我将 ImpalaJDBC4 驱动程序版本 2.5.16 替换为 2.5.30 版本并且它工作正常。 我在使用 Simba 驱动程序时也遇到了同样的问题。我可以知道您使用的是哪个驱动程序吗?你的 JDK 和操作系统是什么 [in client] @3Libras - 在使用 JDK1.8 和 ImpalaJDBC41 驱动程序的 Linux 环境中,我也遇到了同样的错误。你能告诉你对环境细节做了什么吗? 【参考方案1】:

当我在 DBeaver 上连接到 Impala 时遇到同样的错误。

我发现的可能解决方法是不断更新到可用的最新 Impala JDBC 驱动程序。

注意:它工作了一段时间,然后我又得到了同样的错误。再次更新即可解决问题。

【讨论】:

以上是关于无法使用 Impala JDBC 驱动程序通过 Java 应用程序连接到 Impala的主要内容,如果未能解决你的问题,请参考以下文章

在没有 Impala JDBC 驱动程序的情况下从 R 连接到 Impala

无法通过 jdbc 连接到 hive

如何使用java代码通过JDBC连接Impala(附Github源码)

Impala 通过 JDBC 流式传输真的很慢

将 Slick 与 Kudu/Impala 一起使用

使用jdbc查询impala时的超时问题