ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python2.7连接hive(使用impyla)环境搭建

2019-04-04 12:51:35  阅读:543  来源: 互联网

标签:body impyla python2.7 hive install pip sasl thrift


已有环境:

hive部署在linux系统的跳板机上的某个节点,要连接hive,需要将自己的vpn加入白名单(运维协助)

 

python2.7连接hive

先安装必要的包

1.pip install six;

2.pip install bit_array;

3.pip install thriftpy         备注: thrift (on Python 2.x) or thriftpy (on Python 3.x)

4.pip install thrift_sasl 
5.pip install sasl

若报错error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

此错误需要安装Visual Studio 

安装地址:https://pan.baidu.com/s/1URHzFhpsYA06Ck7FJzu4yw

安装好又报错error: command’C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe’ failed with exit status 2

安装的sasl版本不适用问题,python27的
重新下载sasl,https://pan.baidu.com/s/14-ubkI6YdHBrjKQC2DCY3Q
将下载的文件解压发在site-packages目录下,这是已安装好的包,放在此目录下就行

如报错:'TSocket' object has no attribute 'isOpen'
则是thrift-sasl的版本太高了(0.3.0),故将thrift-sasl的版本降级到0.2.1
pip install thrift-sasl==0.2.1

此时安装impyla
pip install impyla
可以安装成功了,测试连接hive

若报错TypeError: can’t concat str to bytes

定位到错误的最后一条,在init.py第94行
header = struct.pack(">BI", status, len(body))
self._trans.write(header + body)

修改为
header = struct.pack(">BI", status, len(body))
if(type(body) is str):
    body = body.encode() 
self._trans.write(header + body)
 

 

#coding=utf8
from impala.dbapi import connect

ip='192.168.97.47'
db='aaa'
sql='select * from a limit 5'


conn = connect(host=ip, port=10000, database=db, auth_mechanism='PLAIN')
cursor = conn.cursor()
try:
    cursor.execute(sql)
    result = cursor.fetchone()
    print(result)


except Exception as  e:
    print('get record nexthiveUpdateTime file fail:"dw_utime" ')

返回结果,则连接成功

可参考博客https://blog.csdn.net/Xiblade/article/details/82318294?utm_source=copy

标签:body,impyla,python2.7,hive,install,pip,sasl,thrift
来源: https://blog.csdn.net/qq_35958094/article/details/83582865

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有