第一章:python连接hive步骤
1.1 python连接impala步骤
pip install impyla 不能成功连接python impyla需要依赖其他库才能够安装成功,以下是其他库的安装顺序
依次按照以下步骤来执行
pip install pure-sasl
pip install thrift_sasl0.2.1–no-deps
pip install thrift0.9.3
pip install impyla
这里是引用
1.2 安装过程中可能存在的报错
报错一:‘TSocket’ object has no attribute ‘isOpen’
解决办法:
1.由于是thrift-sasl的版本太高了(0.3.0),故将thrift-sasl的版本降级到0.2.1 pip install thrift-sasl=0.2.1
2.pip需要升级 python -m pip install --upgrade pip
3.pip install thrift-sasl=0.2.1 安装失败 https://www.lfd.uci.edu/~gohlke/pythonlibs/#thrift 在这个网站按照报错来下载文件 然后用 pip install +存储位置+文件名
thriftpy.transport.TTransportException: TTransportException(type=1, message=“Could not start SASL: b’Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2’”)
解决办法:
1.这个报错是由于sasl和pure 不兼容导致的 解决办法: pip uninstall sasl
2.impyla 是使用pure-sasl , pyhive 使用sasl ,两者不兼容,所以不能同时存在
3.注意:需要删除干净
1.3 测试连接hive
测试python连接hive是否成功
from impala.dbapi import connect
from impala.util import as_pandas
db=connect(host='',port=,user='',password='',database='',auth_mechanism='')
cr=db.cursor()
df1=cr.fetchall()
可能会存在的报错:
•TypeError: can't concat str to bytes
header = struct.pack(">BI", status, len(body))
self._trans.write(header + body)
以上报错修改为:
header = struct.pack(">BI", status,