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

新手上路,请多包涵

我在一台 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')

我们将 Kerberos GSSAPI 与 SASL 结合使用

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',)

我想知道我是否仍然缺少一些依赖项。

原文由 richban 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 910
1 个回答

我遇到了同样的问题,但我通过安装所需库的正确版本来修复它。

使用 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)

原文由 Sumit Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏