Impala JDBC 连接:错误设置/关闭会话:打开会话错误
Posted
技术标签:
【中文标题】Impala JDBC 连接:错误设置/关闭会话:打开会话错误【英文标题】:Impala JDBC connection: Error setting/closing session: Open Session Error 【发布时间】:2016-08-04 18:46:04 【问题描述】:如果我有以下类型的 impala 连接,我还能使用 SquirreL SQL:
self.impala_con = connect(host='sql.edamame.com', port=25003, use_ssl=True, auth_mechanism="PLAIN",
user='edamame1', password='edamamePass')
这是我在 Squirrel 中设置别名的方法:
测试连接时出现以下错误:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.sql.SQLException: [Simba][ImpalaJDBCDriver](500151) Error setting/closing session: Open Session Error.
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.awaitConnection(OpenConnectionCommand.java:132)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$100(OpenConnectionCommand.java:45)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$2.run(OpenConnectionCommand.java:115)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
更新:
我也试过下面的网址:
jdbc:impala://sql.edamame.com:25003/default;AuthMech=3;SSL=1
并得到以下新错误:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.sql.SQLException: [Simba][ImpalaJDBCDriver](500310) Invalid operation: null;
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.awaitConnection(OpenConnectionCommand.java:132)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$100(OpenConnectionCommand.java:45)
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$2.run(OpenConnectionCommand.java:115)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我还可能缺少什么?谢谢!
【问题讨论】:
【参考方案1】:简答:RTFM。
长答案:Cloudera JDBC 驱动程序附带 80 多页 PDF“安装和配置指南”。不要害羞,打开它。您可以直接前往附录 A - 驱动程序配置 并查看以下条目:
AuthMech要使用的身份验证机制。 将该值设置为以下数字之一:0 表示无身份验证1 表示 Kerberos2 表示用户名3 表示用户名和密码
SSL 当此属性设置为 1 时,驱动程序通过启用 SSL 的套接字与 Impala 服务器通信。当此属性设置为 0 时,驱动程序不会连接到启用 SSL 的套接字。
所以您的网址应该类似于jdbc:impala://blahblah:25003/default;AuthMech=3;SSL=1
还有一点:要解决 SSL 握手问题,您可以使用此 Java 系统属性启用调试跟踪...-Djavax.net.debug=ssl
【讨论】:
感谢 Samson,我尝试了您建议的 URL,然后出现新错误(请参阅问题中的更新)。你知道我错过了什么吗?谢谢! @Edamame,我敢打赌 SSL 证书验证问题——您的服务器要么使用自签名证书,要么使用由公司 C.A. 签名的证书。尚未在 JRE 的默认 TrustStore 中列出。确定启用调试跟踪标志,然后如果是这种情况,请了解Java属性javax.net.ssl.trustStore
和.trustStorePassword
;还可以了解 keytool
实用程序以创建 JKS 格式的自定义 TrustStore。玩得开心...!
@Edamame,再想一想,SSL 证书验证问题对于所发生的事情会更加冗长(javax.net.ssl.SSLHandshakeException
)。谷歌关于那个错误代码和 ImpalaJDBCDriver 并玩得开心......!以上是关于Impala JDBC 连接:错误设置/关闭会话:打开会话错误的主要内容,如果未能解决你的问题,请参考以下文章
夜莺5.5--实现impala自动关闭waiting to be closed会话