Support Questions

Find answers, ask questions, and share your expertise
Announcements
Celebrating as our community reaches 100,000 members! Thank you!

Python Error 'TSaslClientTransport' object has no attribute 'trans' when openning cursor to Impala

avatar
Contributor

Hi ,

using Ubuntu 14.0.4 and 16.0.4 unable to work with Impala via Python .

 

Installed :

 

pip install impyla

apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev

pip install thrift_sasl
pip install sasl

 

thrift version install :

thrift (0.10.0)
thrift-sasl (0.2.1)

impyla (0.14.0)

 

The Example Code

------------------------------

from impala.dbapi import connect
conn = connect(host="104.198.200.187", port="25003", user="user", password='pass', auth_mechanism='PLAIN')

print "Connected Successfully"

cur = conn.cursor()

 

--------------------------------------------------------------------------------

stack error :

 

Traceback (most recent call last):
  File "/home/alon/PycharmProjects/test/test.py", line 6, in <module>
    cur = conn.cursor()
  File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 125, in cursor
    session = self.service.open_session(user, configuration)
  File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 995, in open_session
    resp = self._rpc('OpenSession', req)
  File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 923, in _rpc
    response = self._execute(func_name, request)
  File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 940, in _execute
    return func(request)
  File "/usr/local/lib/python2.7/dist-packages/impala/_thrift_gen/TCLIService/TCLIService.py", line 175, in OpenSession
    return self.recv_OpenSession()
  File "/usr/local/lib/python2.7/dist-packages/impala/_thrift_gen/TCLIService/TCLIService.py", line 193, in recv_OpenSession
    result.read(self._iprot)
  File "/usr/local/lib/python2.7/dist-packages/impala/_thrift_gen/TCLIService/TCLIService.py", line 1109, in read
    fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
AttributeError: 'TSaslClientTransport' object has no attribute 'trans'

 

dont know what is going wrong here .

 

Thanks

 

Alon

 

 

1 ACCEPTED SOLUTION

avatar
Contributor

Solved the problem by reinstalling thrift and impyla with the following versions:

 

as root :

 

pip uninstall thrift

pip uninstall impyla

pip install thrift==0.9.3

pip install impyla==0.13.8

 

Regards

 

Alon

View solution in original post

2 REPLIES 2

avatar
Contributor

Solved the problem by reinstalling thrift and impyla with the following versions:

 

as root :

 

pip uninstall thrift

pip uninstall impyla

pip install thrift==0.9.3

pip install impyla==0.13.8

 

Regards

 

Alon

avatar
New Contributor

Was getting this issue in Airflow trying to use HiveServer2Hook:

    ImportError: cannot import name TFrozenDict

 

And figured it might be related to this pip warning:

    impyla 0.14.1 has requirement thrift<=0.9.3, but you'll have thrift 0.11.0 which is incompatible.

 

So I adjusted the thrift and impyla installs as indicated and now HiveServer2Hook works (and HiveOperator still works)--both of which are using kerberos beeline connections.

 

Thanks for posting the fix.