基于python impyla的hive客户端
来源:互联网 发布:淘宝实名认证怎么看 编辑:程序博客网 时间:2024/06/06 09:28
转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
写在前边的话
在hive部署的时候我们谈过hive的三种访问方式
- CLI(shell 终端)
- HWI (Hive的web页面操作)
- thrift (启动hiveserver2服务,基于thrift建立hive的操作)
第三种thrift方式的,网友们进行了封装,目前有三个广负盛名的python backage
- pyhive
- impyla(小主采用该backage)
- pyhs2
小主本地环境介绍
- CentOS6.5 /64 位
- python 2.7
这里小主做的web可视化界面比较菜看两张截图吧(这个是HIW项目的一部分 github-HIW)
部署
impyla必须的依赖包括:
- six
- bit_array
- thriftpy(python2.x则是thrift)
为了支持Hive还需要以下两个包:
- sasl
- thrift_sasl
先安装依赖
pip install thrift_saslpip install sasl
报错:
gcc: error trying to exec 'cc1plus': execvp: No such file or directoryerror: command 'gcc' failed with exit status 1
解决办法:
缺少g++文件
yum install gcc-c++(centos中g++叫gcc-c++,如果直接安装g++会出现No package g++ available. Error: Nothing to do )
又报错:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 73: ordinal not i
解决办法:
在python安装目录的site-packages目录下,创建sitecustomize.py,python会自动加载,添加
import syssys.setdefaultencoding('utf-8')如果涉及到中文只需将utf-8修改为gb2312 即可
又报错:
sasl/saslwrapper.h:22:23: error: sasl/sasl.h: No such file or directory
解决办法
centos解决办法:
yum install gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64
ubuntu/deepin(小主自己的是deepin)
sudo apt-get install libsasl2-dev
然后执行
pip install thrift_saslpip install sasl
OK
pip命令安装:
pip install impyla
报错:
bitarray/_bitarray.c:9:20: fatal error: Python.h: 没有那个文件或目录compilation terminated.error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
解决办法:
由于小主的是deepin 15.2 64位,python版本为2.7,其对应的解决办法是
sudo apt-get install python-dev
python3.X版本对应的命令为
sudo apt-get install python3-dev
然后在执行安装命令即可
pip install impyla
一个小Demo
注意执行该程序之前,必须启动hiveserver2服务
from impala.dbapi import connect#需要注意的是这里的auth_mechanism必须有,但database不必须conn = connect(host='127.0.0.1', port=10000, database='default', auth_mechanism='PLAIN')cur = conn.cursor()cur.execute('SHOW DATABASES')print(cur.fetchall())cur.execute('SHOW Tables')print(cur.fetchall())
关于auth_mechanism解释:
auth_mechanism的值取决于hive-site.xml里边的一个配置
<name>hive.server2.authentication</name><value>NOSASL</value>
auth_mechanism的值默认是NONE,还可以是“NOSASL”,“PLAIN”,“KERBEROS”,“LDAP”
对hql进行连续处理
很简单的应用场景便是我们要处理的N句SQL的连续体,而不是单句的SQL语句,我这里进行的处理办法是切分,使用python的split,然后再进行单句执行
#连接hivedef conn(): con = connect(host="192.168.132.27",port=10000,auth_mechanism="PLAIN") cur = con.cursor() return cur#执行HQL语句def run_hql(sql): sql_list = sql[:-1].split(";") cur=conn() for s in sql_list: cur.execute(s) result=cur.fetchall() return resultif __name__=="__main__": sql="show databases;use default;show tables;" print run_hql(sql)
运行结果也是没有问题的
[root@master1 HIW]# python hive/phive.py[('test',)]
后续若有可能的话,我会更新一些impyla的其他一些用法,因为网上关于impyla的资料很少,除了github项目地址之外很难再找到其他的,所以 如果你有好的文章或者教程的话,欢迎留言
- 基于python impyla的hive客户端
- 基于python impyla,pyhs2的hive客户端
- Hive的Python异步客户端
- 使用python客户端访问hive
- 【Python】基于MQTT的聊天客户端
- Hive的客户端操作
- Hive的客户端操作
- [bigdata-030] cdh 5.9的impyla操作hiveserver2
- 用Python写的基于Tkinter 的FTP客户端
- python编程(基于twisted的客户端编程)
- python基于socket模块的小型服务端、客户端
- 基于Python的TCP服务端/客户端简单应用示例
- 基于Python多线程的TCP客户端/服务端应用示例
- 关于Python基于TCP的服务器端和客户端编程
- hive--基于Hadoop的数据仓库Hive 学习指南
- 基于Hive的数据仓库架构
- 基于Hive的日志分析
- hive (基于hadoop的数据仓库)
- 计算机原理学习(序)
- linux系统上的帮助信息
- 历史
- secureCRT快捷粘贴操作
- 0003-每日一记(2016-09-17)
- 基于python impyla的hive客户端
- 第三周项目2-建设“顺序表”算法库
- 背景
- UML行为建模图——— 时间图
- HDU 5879 Cure(打表)qingdao网赛
- 安装VM tools时错误:依赖检测失败:
- 2016ICPC青岛网络赛 1006
- 打印某个区间之间的素数,并输出素数的个数。如100-200
- 内联式css样式