首先安装impyla
安装impyla之前需要先安装几个依赖
pip install thrift
pip install sasl(如果thrift-sasl==0.2.1安装失败时需要安装此包,直接安装失败时可上pypi中下载wheel文件手动安装)
pip install thrift-sasl==0.2.1
最后安装impyla,如果安装impyla报Setup script exited with error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual等类似错误时需要下载安装Visual C++ 14.0提取码为fr9m,安装界面如下,点击安装完成之后关闭即可
pip install impyla
接下来运行连接测试文件
from impala.dbapi import connect
from impala.util import as_pandas
# 得到连接,
conn = connect(host='10.1.3.159', port=10000, auth_mechanism='PLAIN', user='hive',
password='hive', database='fagaiwei')
# 得到句柄
cursor = conn.cursor()
# 执行查询
cursor.execute('show databases')
# 将结果放入dataframe中显示
as_pandas(cursor)
print(as_pandas(cursor))
# 关闭连接
cursor.close()
conn.close()
第一次运行报错
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'")
此时卸载之前安装的sasl包,安装pure-sasl包
pip install pure-sasl
然后会出现一下错误
File "D:\Software\Anaconda\envs\test366\lib\site-packages\thrift_sasl\__init__.py", line 94, in _send_message
self._trans.write(header + body)
TypeError: can't concat str to bytes
此时点进去最后一个报错信息,也就是代码中的94行,也就是header下面一行添加两行代码
header = struct.pack(">BI", status, len(body))
if (type(body) is str):
body = body.encode()
此时再执行即可成功运行!!!个人安装遇到的一些问题,仅供参考