Support Questions

Find answers, ask questions, and share your expertise

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.