Impala JDBC连接:错误设置/关闭会话:打开会话错误

Impala JDBC连接:错误设置/关闭会话:打开会话错误,jdbc,impala,squirrel-sql,Jdbc,Impala,Squirrel Sql,如果我有以下类型的impala连接,我还可以使用SquirreL SQL吗: self.impala_con = connect(host='sql.edamame.com', port=25003, use_ssl=True, auth_mechanism="PLAIN", user='edamame1', password='edamamePass') 以下是我在Squirrel中设置别名的方法: 在测试连接期间,我遇到

如果我有以下类型的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)

更新:

我还尝试了以下URL:

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)
我可能还遗漏了什么?谢谢

简短回答:RTFM

详细回答:ClouderaJDBC驱动程序附带了80多页的PDF“安装和配置指南”。别害羞,打开它。您可以直接访问附录A-驱动程序配置并查看以下条目:

AuthMech要使用的身份验证机制。
将该值设置为以下数字之一:
0表示无身份验证
1表示Kerberos
2表示用户名
3表示用户名和密码

SSL
当此属性设置为1时,驱动程序通过启用SSL的套接字与Impala服务器通信。当此属性设置为0时,驱动程序不会连接到启用SSL的套接字

因此,您的URL应该看起来像
jdbc:impala://blahblah:25003/default;AuthMech=3;SSL=1

还有一件事:要解决SSL握手问题,可以使用此Java系统属性启用调试跟踪…

-Djavax.net.debug=ssl

谢谢Samson,我尝试了您建议的URL,然后出现了一个新错误(请参阅问题中的更新)。你知道我错过了什么吗?谢谢@Edamame,我敢打赌SSL证书验证问题——要么您的服务器使用自签名证书,要么它使用由公司C.a.签名的证书,该证书未在JRE的默认信任库中列出。启用调试跟踪标志以确保,如果是这样,请了解Java属性
javax.net.ssl.trustStore
.trustStorePassword
;还了解
keytool
实用程序,以创建JKS格式的自定义信任库。玩得开心@Edamame,再想想,SSL证书验证问题将更加详细地说明发生了什么(使用
javax.net.SSL.SSLHandshakeException
)。谷歌关于那个错误代码和ImpalaJDBCDriver,玩得开心。。。!