使用带有Kerberos身份验证的impyla客户端连接到Impala

2024-05-16 16:25:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一台W8机器上,使用Python(Anaconda发行版)连接到使用Impyla包的Hadoop集群中的Impala。我们的hadoop集群是通过Kerberos来保护的。我已经遵循了API REFERENCE如何配置连接。

    from impala.dbapi import connect
    conn = connect( host='localhost', port=21050, auth_mechanism='GSSAPI',
               kerberos_service_name='impala')

我们在SASL中使用Kerberos GSSAPI

auth_mechanism='GSSAPI'

我已经成功地为WIN8安装了python sasl库,但是仍然遇到了这个错误。

Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found (code THRIFTTRANSPORT): TTransportException('Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found',)

我想知道我是否还缺少一些依赖关系。


Tags: inclientauthconnectnot集群errorkerberos
3条回答

对我来说,以下连接参数起作用。我不需要在python中安装任何额外的包。

connect(host="your_host", port=21050, auth_mechanism='GSSAPI', timeout=100000, use_ssl=False, ca_cert=None, ldap_user=None, ldap_password=None, kerberos_service_name='impala')

我遇到了同样的问题,但我通过安装所需库的正确版本解决了这个问题。

使用pip安装以下python库:

six==1.12.0
bit_array==0.1.0
thrift==0.9.3
thrift_sasl==0.2.1
sasl==0.2.1
impyla==0.13.8

下面的代码可以很好地处理python版本2.73.4

import ssl
from impala.dbapi import connect
import os
os.system("kinit")
conn = connect(host='hostname.io', port=21050, use_ssl=True, database='default', user='urusername', kerberos_service_name='impala', auth_mechanism = 'GSSAPI')
cur = conn.cursor()
cur.execute('SHOW DATABASES;')
result=cur.fetchall()
for data in result:
    print (data) 

对我来说,安装这个包修复了它:libsasl2 modules gssapi mit

相关问题 更多 >