我愛學習網-上傳
當前位置: 主頁 > 文庫 > Python >

Python:Hive:impyla:安裝方法

時間:2020-08-06 11:10來源:我愛學習網 作者:apple 點擊:

日常工作中因為本地使用的是window10系統, 而crontab使用的是linux系統, 想使用Python3搭建impyla鏈接公司Hive庫, 但一直出現安裝問題, 因此在這里記錄下相關安裝過程已被之后使用.

 

Python連接Hive的方法有:
* ThriftHive  ## Thrift是Hive連接外部的一個組件
* pyhs2 driver ## 需開啟hiveserver2服務
* PyHive ## Linux推薦
* impyla ## Windows推薦

 

一、安裝方法

 

曾經由此安裝時使用的各最新版第三方庫導致安裝失敗, 因此不建議所有庫都使用最新第三方庫.

 

1.1 Windows10

 

impyla安裝過程

 

安裝依賴

 

### 安裝依賴
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bit_array==0.1.0 ## -i 使用清華源進行下載, 國內還是清華源會快很多.
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple thrift==0.9.3
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple thriftpy==0.3.9
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pure_sasl==0.6.1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-deps thrift-sasl==0.2.1

 

安裝impyla

 

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple impyla==0.14.1

 

連接Hive

 

from impala.dbapi import connect
conn = connect(host=host, port=port, database=database, user=user, password=password, auth_mechanism="PLAIN") ## auth_mechanism是Hive的配置設置 
cur = conn.cursor()
cur.execute('show tables')
print(cur.fetchall())

 

注意事項

 

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

 

卸載方法: pip uninstall sasl

 

  1. 在安裝過程中, 如果出現包安裝失敗的情況, 可以下載whl包進行安裝

 

安裝方式: pip install 絕對地址.whl

 

  1. 如果在安裝過程中, 出現任何包安裝失敗的問題, 可以先將之前所有安裝過的包統統卸載, 再按順序依次安裝一遍.
  2. Linux建議采用pyhive形式連接

 

sudo yum install cyrus-sasl-devel
sudo yum install gcc-c++
pip3 install sasl
pip3 install thrift
pip3 install thrift-sasl
pip3 install PyHive

 

問題集錦

 

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

 

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

pip install thrift-sasl==0.2.1

 

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

 

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

 

  1. TypeError: can’t concat str to bytes

 

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

 

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

 

  1. 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形式連接

 

  1. 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:即可

 

1.2 Linux

 

Linux包主要安裝impyla相對容易, 但是需要安裝幾個依賴環境.

 

安裝系統依賴

 

apt-get install -y --no-install-recommends gcc libsasl2-dev python3.x-dev ##其中python3.x-dev需要看在Linux上運行相關程序的具體python版本

 

安裝impyla

 

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bit_array==0.1.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple thrift==0.9.3
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple thriftpy==0.3.9
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pure_sasl==0.6.1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-deps thrift-sasl==0.2.1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple impyla==0.14.1
------分隔線----------------------------
    ?分享到??
看看啦
主站蜘蛛池模板: 2022年亚洲午夜一区二区福利 | 国产一区二区三区小说| 中文字幕一区在线观看视频| 亚洲一区二区三区偷拍女厕| 精品国产一区在线观看 | 国产激情一区二区三区在线观看 | 精品福利一区3d动漫| 人妻AV中文字幕一区二区三区| 国产精品免费一区二区三区 | 国产日韩一区二区三免费高清| 欧美人妻一区黄a片| 99精品一区二区三区| 色窝窝无码一区二区三区色欲| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久精品国产免费一区| 亚洲片国产一区一级在线观看| 国产伦精品一区二区三区免费下载| 无码人妻一区二区三区一| 麻豆一区二区三区精品视频| 亚洲视频在线一区| 农村乱人伦一区二区| 日韩一区二区在线观看视频| 亚洲无删减国产精品一区| 亚欧色一区W666天堂| 老熟妇仑乱视频一区二区| 无码人妻品一区二区三区精99| 久久青草精品一区二区三区| 久久久精品一区二区三区| 性无码免费一区二区三区在线| 性无码免费一区二区三区在线 | 国产一区在线电影| 色综合一区二区三区| 国产av熟女一区二区三区| 久久精品国产免费一区| 亚洲香蕉久久一区二区| 怡红院美国分院一区二区| 视频一区在线免费观看| 国产免费一区二区三区不卡 | 无码中文字幕一区二区三区| 日本精品一区二区在线播放| 日韩一区二区三区精品|