我的HiveServer2具有SSL(仅启用了最低TLS1.2)和LDAP,没有启用kerberos。 hive.server2.transport.mode =二进制。
直线连接可以正常工作,例如:
beeline -u jdbc:hive2://domain:10000/default\;ssl=true\;sslTrustStore=/home/user/query.jks\;trustStorePassword=blah -n user -p pass -e "SELECT * FROM table LIMIT 3"
如预期的那样,通过beeline无法传递正确的信任库详细信息或错误的ldap凭据意味着连接不起作用。
我想使用python库连接到HiveServer2(特别是带有TLS1.2的Hive设置)。
我看过几个库,例如impyla,pyhive,pyhs2,sqlalchemy,但是没有一个对我有用。 我看到其他人提出了几个问题:
在线上有很多示例,这些示例中没有受TLS1.2保护的HiveServer2实例。
从impala.dbapi导入`>>>
conn = connect(host ='domain',port = 10000,use_ssl = True,auth_mechanism ='LDAP',user ='user',password ='pass',ca_cert ='/ home / user / query.pem ') 追溯(最近一次通话): 文件“”,第1行,位于 连接中的文件“ /usr/local/lib/python2.7/site-packages/impala/dbapi.py”,第147行 auth_mechanism = auth_mechanism) 连接中的文件“ /usr/local/lib/python2.7/site-packages/impala/hiveserver2.py”,行658 transport.open() 打开的文件“ /usr/local/lib/python2.7/site-packages/thrift_sasl/init.py”,第68行 self._trans.open() 打开文件“ /usr/local/lib64/python2.7/site-packages/thrift/transport/TSSLSocket.py”,第118行 消息=消息) thrift.transport.TTransport.TTransportException:无法连接到域:10000:[SSL:WRONG_VERSION_NUMBER]版本号错误(_ssl.c:726)`
答案 0 :(得分:1)
如果HiveServer2在启用SSL的情况下运行,则impyla(0.13.8+)可以正常运行。如果HiveServer2在禁用SSL的情况下运行,则pyhive效果很好。
有关依赖项,安装和示例的更多详细信息,请参阅以下页面: