0
我想连接到配置单元使用python 2(miniconda2安装)。 下面是代码我trying-pyhs2错误连接到kerberos启用配置单元
connection = hive.connect(host='psvlxihpnn1', port= '10000', authMechanism='KERBEROS', user='***',password='****', configuration={'krb_host': 'psvlxihpnn1', 'krb_service': 'ITEDM'})
Kerberos的主机安装在同一台主机上,并具有服务名称“ITEDM” 奇怪的是,我得到下面的错误 -
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/export/home/itedm/miniconda2/lib/python2.7/site-packages/pyhs2-0.6.0-py2.7.egg/pyhs2/__init__.py", line 7, in connect
File "/export/home/itedm/miniconda2/lib/python2.7/site-packages/pyhs2-0.6.0-py2.7.egg/pyhs2/connections.py", line 46, in __init__
File "/export/home/itedm/miniconda2/lib/python2.7/site-packages/pyhs2-0.6.0-py2.7.egg/pyhs2/cloudera/thrift_sasl.py", line 66, in open
thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-1) SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server krbtgt/[email protected] not found in Kerberos database)
我没有通过'krbtgt'作为用户,不知道为什么这个错误即将到来。 感谢您的帮助。
语法是'service/host @ REALM'和'krbtgt“的意思是”实际上不是*授权*请求*服务*,而是*验证*请求获得KeRBeros票证授予票证(* krb tgt *)“ –
而在TGT的情况下,”服务负责人“应该读作'krbtgt/REALM @ REALM'(只需使用'kinit someuser @ SOME.REALM'在默认缓存中创建一张票并检查结果'klist'),所以你显然有问题。 –
另一方面,您的用户需要一个TGT,但Hive JDBC URL应明确提及** Hive服务**的Kerberos主体,即通常是'hive/hs2.host.fqdn @ REALM',因此您应该阅读仔细阅读关于这个难看的Python库的文档(如果有的话)。 –