Tuesday, September 5, 2017

Unable to connect to Hive2 using Python

Leave a Comment

While connecting to Hive2 using Python with below code:

import pyhs2  with pyhs2.connect(host='localhost',            port=10000,            authMechanism="PLAIN",            user='root',            password='test',            database='default') as conn: with conn.cursor() as cur:     #Show databases     print cur.getDatabases()      #Execute query     cur.execute("select * from table")      #Return column info from query     print cur.getSchema()      #Fetch table results     for i in cur.fetch():         print i 

I am getting below error:

File "C:\Users\vinbhask\AppData\Roaming\Python\Python36\site-packages\pyhs2-0.6.0-py3.6.egg\pyhs2\connections.py", line 7, in <module>     from cloudera.thrift_sasl import TSaslClientTransport ModuleNotFoundError: No module named 'cloudera' 

Have tried here and here but issue wasn't resolved.

Here is the packages installed till now:

bitarray0.8.1,certifi2017.7.27.1,chardet3.0.4,cm-api16.0.0,cx-Oracle6.0.1,future0.16.0,idna2.6,impyla0.14.0,JayDeBeApi1.1.1,JPype10.6.2,ply3.10,pure-sasl0.4.0,PyHive0.4.0,pyhs20.6.0,pyodbc4.0.17,requests2.18.4,sasl0.2.1,six1.10.0,teradata15.10.0.21,thrift0.10.0,thrift-sasl0.2.1,thriftpy0.3.9,urllib31.22 

Error while using Impyla:

Traceback (most recent call last): File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\Scripts\HiveConnTester4.py", line 1, in <module> from impala.dbapi import connect File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\dbapi.py", line 28, in <module> import impala.hiveserver2 as hs2 File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\hiveserver2.py", line 33, in <module> from impala._thrift_api import ( File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\_thrift_api.py", line 74, in <module> include_dirs=[thrift_dir]) File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\thriftpy\parser\__init__.py", line 30, in load include_dir=include_dir) File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\thriftpy\parser\parser.py", line 496, in parse url_scheme)) thriftpy.parser.exc.ThriftParserError: ThriftPy does not support generating module with path in protocol 'c' 

2 Answers

Answers 1

thrift_sasl.py is trying cStringIO which is no longer available in Python 3.0. Try with python 2 ?

Answers 2

You may need to install an unreleased version of thrift_sasl. Try:

pip install git+https://github.com/cloudera/thrift_sasl 
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment