python-无法连接到启用TLS1.2的HiveServer2

时间:2019-04-02 16:46:39

标签: python hadoop hive sqlalchemy impyla

我的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)`

    
  

1 个答案:

答案 0 :(得分:1)

如果HiveServer2在启用SSL的情况下运行,则impyla(0.13.8+)可以正常运行。如果HiveServer2在禁用SSL的情况下运行,则pyhive效果很好。

有关依赖项,安装和示例的更多详细信息,请参阅以下页面:

https://mr3docs.datamonad.com/docs/k8s/user/access-python/