在使用DataEngine大数据平台时,一般集群都是不联网的,使用pyhive时99%工作都是在安装相关的python依赖包,并且不同环境上缺少的依赖python包也不太一样,本篇文章是在DataEngine大数据集群内或客户端上安装pyhive,使用python版本为2.7。
本篇文章介绍下如何在离线情况下安装pyhive。
安装依赖包
在安装Pyhiv前需要先安装如下依赖:
分别对安装包进行解压,执行python setup.py install 进行安装,安装顺序如下:
- future-0.18.2.tar.gz
- six-1.16.0.tar.gz
- setuptools_scm-1.15.0.tar.gz
- python-dateutil-2.8.0.tar.gz
- PyHive-0.6.4.tar.gz
- thrift-0.13.0.tar.gz
- sasl-0.3.1.tar.gz
- pure-sasl-0.6.2.tar.gz
- thrift_sasl-0.4.3.tar.gz
这些包已经为大家准备好,可以直接在网盘下载,下载链接:
链接: https://pan.baidu.com/s/1XFozZU1t5WFgie2HUA-SKA 提取码: fmmi 复制这段内容后打开百度网盘手机App,操作更方便哦
如果安装过程中还提示缺失其他包,那么需要在pypi:PyPI · The Python Package Index 自行下载:
执行pyhive测试程序
准备pyhive测试代码,当前环境为开启kerberos,需要在代码中先执行认证命令,并将keytab替换为自己认证文件和目录:
import os
from pyhive import hive
from TCLIService.ttypes import TOperationState #此地方可以忽略,为了获取执行结果状态
#先进行kerberos认证,keytab及存放路径和principal修改为具体值
os.system('kinit -kt {}/hadoop.keytab {}'.format('/opt/pyhive/','hadoop'))
# 打开hive连接,需要启动hiveserver2,修改host为集群hiveserver名
hiveConn = hive.connect(host='node1',port=10000,auth='KERBEROS',kerberos_service_name='hive')
cursor = hiveConn.cursor()
# 执行sql语句
cursor.execute('create table if not exists test(id int, name string)', async=False)
cursor.execute('insert into test values(1111, "aaaa")', async=False)
cursor.execute('select * from test', async=True)
# 得到执行语句的状态
status = cursor.poll().operationState
print "status:",status
# 打印结果
#print cursor.fetchall()
#print cursor.fetchall()
for result in cursor.fetchall():
print "aaaaa"*20
print result
print "end**" *10
# 关闭hive连接
cursor.close()
hiveConn.close()
执行python testhive.py:
安装过程问题汇总:
1. 可能出现can not find setuptools 或者 Requirement.parse('setuptools>=20.5' )异常
删除python目录下旧版本setup,rm -rf /usr/lib/python2.7/site-packages/setuptools然后安装新版本setup:
unzip setuptools-41.6.0.zip
cd setuptools-41.6.0
python setup.py install
2. 找不到python.h文件
原因一般是python安装存在问题,重新安装python-devel即可:
yum install python-devel
3. 执行testhive.py文件时出现 no mechanism available: No worthy mechs found
这种一般由于sasl安装存在问题,可以安装cyrus解决:
rpm -ivh cyrus-sasl-2.1.26-23.el7.i686.rpm
rpm -ivh cyrus-sasl-2.1.26-23.el7.x86_64.rpm
rpm -ivh cyrus-sasl-devel-2.1.26-23.el7.i686.rpm
rpm -ivh cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
rpm -ivh cyrus-sasl-gssapi-2.1.26-23.el7.i686.rpm
rpm -ivh cyrus-sasl-gssapi-2.1.26-23.el7.x86_64.rpm
rpm -ivh cyrus-sasl-lib-2.1.26-23.el7.i686.rpm
rpm -ivh cyrus-sasl-lib-2.1.26-23.el7.x86_64.rpm
rpm -ivh cyrus-sasl-plain-2.1.26-23.el7.i686.rpm
rpm -ivh cyrus-sasl-plain-2.1.26-23.el7.x86_64.rpm