Python 2.7 Kerberos安装后Python Impyla失败

Python 2.7 Kerberos安装后Python Impyla失败,python-2.7,kerberos,anaconda,impala,Python 2.7,Kerberos,Anaconda,Impala,我在一台W7机器上,在那里我使用Python(Anaconda发行版)通过Impyla包连接到Hadoop集群中的Impala。 我的公司最近添加了Kerberos,这最终打破了我现有的架构 在Kerberos之前: from impala.dbapi import connect conn = connect( host='localhost', port=21050) cur = conn.cursor() cur.execute('SHOW TABLES') cur.fetchall()

我在一台W7机器上,在那里我使用Python(Anaconda发行版)通过Impyla包连接到Hadoop集群中的Impala。 我的公司最近添加了Kerberos,这最终打破了我现有的架构

在Kerberos之前:

from impala.dbapi import connect
conn = connect( host='localhost', port=21050)
cur = conn.cursor()

cur.execute('SHOW TABLES')
cur.fetchall()
Kerberos之后的

from impala.dbapi import connect
conn = connect( host='localhost', port=21050, use_kerberos=True,
               kerberos_service_name='impala/myservername')

Traceback (most recent call last):

  File "<ipython-input-13-068c7348729f>", line 2, in <module>
    kerberos_service_name='impala/myservername')

  File "C:\Users\x\AppData\Local\Continuum\Anaconda\lib\site-packages\impala\dbapi\__init__.py", line 47, in connect
    ldap_password, use_kerberos, kerberos_service_name)

  File "C:\Users\x\AppData\Local\Continuum\Anaconda\lib\site-packages\impala\_rpc\hiveserver2.py", line 193, in connect_to_impala
    use_kerberos, kerberos_service_name)

  File "C:\Users\x\AppData\Local\Continuum\Anaconda\lib\site-packages\impala\_rpc\hiveserver2.py", line 166, in _get_transport
    import sasl

ImportError: No module named sasl

我看到你正在运行Windows。你是在运行cygwin还是其他python

您是否尝试过:

  • 如果使用Cygwin,您是否尝试过安装libsasl2-devel

  • 从GIT存储库中安装python sasl,就像Cloudera在他们的应用程序中所做的那样

    pip安装git+

  • 我们应该变魔术

    顺便说一句,您正在使用的代码已经被弃用(根据当前的GitHub主机)

    使用


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

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