win10+Python3.6.6+impyla 连接hive

首先安装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()

此时再执行即可成功运行!!!个人安装遇到的一些问题,仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值