使用python操作hive
python版本为2.7.5(redhat系统自带)
hive版本为1.1.0
连接方法一
1、安装pyhive
1.1、安装pip:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py #下载安装脚本
$ sudo python get-pip.py
pip安装1.2、安装python开发包
查看系统是否有python开发包
rpm -qa|grep python-dev
rpm -qa|grep cyrus-sasl-devel
安装开发包
rpm -ivh python-devel-2.7.5-34.el7.x86_64.rpm
rpm -ivh cyrus-sasl-devel-2.1.26-19.2.el7.x86_64.rpm
1.3、安装依赖包
所需依赖包
thrift,thrift_sasl,sasl
安装命令如:
$ sudo pip install thrift
安装成功如图
安装成功1.4、安装pyhive
安装命令如:
sudo pip install pyhive
安装过程2、测试
所需环境已经完成,进行编程
# encoding=utf-8
from pyhive import hive
from TCLIService.ttypes import TOperationState #此地方可以忽略,为了获取执行结果状态
# 打开hive连接,需要启动hiveserver2
hiveConn = hive.connect(host='127.0.0.1',port=10000)
cursor = hiveConn.cursor()
# 执行sql语句
cursor.execute('show databases', 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程序保存成py2hive.py文件,运行即可
$ python py2hive.py
运行结果3、编译
将脚本程序编译为二进制文件
3.1、编译方式一
使用python命令行进行
> import py_compile
> py_compile.compile("py2hive.py")
在与py2hive.py 同级目录下出现 py2hive.pyc 的文件
使用 python py2hive.pyc 命令执行得到结果和上图一致
3.2、编译方式二
使用命令行 python -o -m py_compile py2hive.py,生成pyo的文件
使用python py2hive.pyo 运行结果与以上一致
运行结果无论是pyc,还是pyo文件,都无法单独自己执行,是因为python脚本在开头没有指定环境变量,导致被当作是shell命令来执行。
需要在首行加上#!/usr/bin/python ,这样就会自动被python解释.py文件进行执行。
当然也可以使用cloudera官网给出的impyla 连接hive
网友评论