【大數據】windows 下python3連接hive


注意:impyla 既可以連接impala, 也可以連接hive

環境 : windows10

python版本:3.6

hive版本:1.1 

親測可用!

 

impyla安裝過程

安裝依賴

pip install bit_array

pip install thrift

pip install thriftpy

pip install pure_sasl

pip install --no-deps thrift-sasl==0.2.1

安裝impyla

pip install impyla

連接Hive

# -*-coding:utf-8 -*-
from impala.dbapi import connect
conn = connect(host='ip', port=port, database='default', user='user_name', password='password', auth_mechanism="PLAIN")
cur = conn.cursor()
cur.execute('show tables')
print(cur.fetchall())

注意事項

1.重點不要安裝sasl,否則會提示報錯

卸載方式:pip uninstall sasl

2.在安裝過程中,如果出現包安裝失敗的情況,可以下載whl包進行安裝,下載鏈接:https://www.lfd.uci.edu/~gohlke/pythonlibs/

安裝方式:pip install 包的絕對路徑

3.如果在安裝過程中,出現任何包安裝失敗的問題,可以先將之前所有安裝過的包統統卸載,再按順序依次安裝一次

 

 

問題集錦

impyla (0.14.0) ERROR - 'TSocket' object has no attribute 'isOpen'

這個問題的原因是thrift-sasl版本過高導致的,將其換成0.2.1的版本即可

pip install thrift-sasl==0.2.1

thriftpy2.protocol.exc.TProtocolException: TProtocolException(type=4)

這是由於auth_mechanism設置的問題導致的,加上或將其改為auth_mechanism="PLAIN"即可

TypeError: can’t concat str to bytes

修改 thrift-sasl init.py,在第94行之前加上以下語句即可:

if (type(body) is str):
    body = body.encode()

thrift.transport.TTransport.TTransportException: Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2'

這是Windows下采用pyhive連接方式提出的錯誤,正如前言所述,可能需要修改對應的配置文件,也可能sasl根本就不支持Windows,建議改用impyla形式連接

thriftpy.parser.exc.ThriftParserError: ThriftPy does not support generating module with path in protocol 'c'

修改thriftpy包下\parser\parser.py"中第488行代碼,將"if url_scheme == '':" 修改為"if len(url_scheme) <=1:"即可

 

轉載自 https://www.aitolearn.com/article/9a06a8e1ff5e4252aa2373eb3cc4fed8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM