注:Python端所在服务器为centos6.8
参考博文:https://blog.csdn.net/u010916338/article/details/89764877
重要一点,hive是个客户端,不是集群,在hive所在节点必须执行如下命令:
hive --service hiveserver2
参考博文:https://blog.csdn.net/zhangzc12409/article/details/79224487
注:客户端指的是装有anaconda的python环境的Linux机器,并非装有hive的机器
以下涉及所有包,
链接:https://pan.baidu.com/s/13qTcsUxXgwKFki9tPwODxA
提取码:6xy5
(1)yum install gcc-c++
断网情况下,参考博文:https://blog.csdn.net/u010916338/article/details/95586525
(2)yum install python-devel.x86_64
断网情况下,下载3个包,python-devel-2.6.6-66.el6_8.x86_64.rpm以及两个依赖包,python-2.6.6-66.el6_8.x86_64.rpm和python-libs-2.6.6-66.el6_8.x86_64.rpm
注:这个底层依赖Python2.6,有可能存在装不上的情况,除了一个一个装还有一个办法就是将上面三个包放到一个文件夹里,然后命令行切换到该目录,执行命令:rpm -Uvh *.rpm --nodeps --force 这条命令的好处就是,谁依赖谁不用管,谁先安装不用管,有的依赖没有跑到100%也不用管,自己就会安装成功。
(3)yum install cyrus-sasl-devel.x86_64
断网情况下,下载包,cyrus-sasl-devel-2.1.23-15.el6_6.2.x86_64.rpm
执行命令:rpm -ivh cyrus-sasl-devel-2.1.23-15.el6_6.2.x86_64.rpm
(4)yum install cyrus-sasl-md5
断网下载包,cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64.rpm
执行命令:rpm -ivh cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64.rpm
(5)yum install cyrus-sasl-plain
断网下载包,cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64.rpm
执行命令:rpm -ivh cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64.rpm
(6)yum install cyrus-sasl-lib
断网下载包,cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm
执行命令:rpm -ivh cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm
(7)yum install cyrus-sasl-gssapi
断网下载包,cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64.rpm
执行命令:rpm -ivh cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64.rpm
(8)pip install sasl
断网下载包,sasl-0.2.1.tar.gz
执行命令:rpm -ivh sasl-0.2.1.tar.gz
(9)pip install thrift
断网下载包,thrift-0.11.0.tar.gz
执行命令:tar -xvf thrift-0.11.0.tar.gz
进入解压后的文件夹,执行命令:python setup.py install
(10)pip install thrift-sasl
断网下载包,thrift_sasl-0.3.0.tar.gz
执行命令:tar -xvf thrift-0.11.0.tar.gz
进入解压后的文件夹,执行命令:python setup.py install
(11)pip install PyHive
断网下载包,PyHive-0.6.1.tar.gz,future-0.17.1.tar.gz
执行命令:tar -xvf PyHive-0.6.1.tar.gz tar -xvf future-0.17.1.tar.gz
进入解压后的文件夹,执行命令:python setup.py install
注意连接的各项参数
#ip地址,即hive所在节点地址,注意hive是一个客户端,不是一个集群。
#port是hive所在节点执行hive --service hiveserver2后自然就会打开10000端口
#username,如果安装hive时没有设定,那么默认用户名就是hive
#database,即你要访问的已经在hive中创建的数据库,如果之前未创建,那么hive中自带有一个名叫default的数据库可以用来测试连通性。
#tablename,数据库中表名
from pyhive import hive
conn = hive.Connection(host='ip地址', port=10000, username='用户名', database='default')
cursor = conn.cursor()
cursor.execute('select * from tablename limit 10')
for result in cursor.fetchall():
print( result)