python访问hive2
来源:互联网 发布:java api kettle教程 编辑:程序博客网 时间:2024/06/17 02:07
HiveServer2为客户端在远程执行hive查询提供了接口,通过Thrift RPC来实现,还提供了多用户并发和认证功能。目前使用python的用户可以通过pyhs2这个模块来连接HiveServer2,实现查询和取回结果的操作。
1.安装pyhs2
pip install pyhs2yum install cyrus-sasl-plainyum install cyrus-sasl-devel
yum install ython-devel.x86_64
yum install cyrus-sasl-devel.x86_64
#如果有报错根据提示处理就行了,比较简单
2.实例展示
以下为一段小实例的代码,pyhs2提供了基本的功能,查询输出的结果为list,再将list的内容写入到exel里面,我要根据每个sql语句写入到对应的sheet中,设计到20多个,还有目前都是写入到了代码中,一些配置文件可以写到configparser配置文件中
#!/usr/bin/env python# -*- coding: utf-8 -*-# hive util with hive server2"""@author:wyf@create:2016-06-29 16:55"""__author__ = 'wyf'__version__ = '0.1'import pyhs2import xlrdimport xlwtimport sysdefault_encoding = 'utf-8'if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding)class HiveClient: def __init__(self, db_host, user, password, database, port=10000, authMechanism="PLAIN"): """ create connection to hive server2 """ self.conn = pyhs2.connect(host=db_host, port=port, authMechanism=authMechanism, user=user, password=password, database=database, ) def query(self, sql): """ query """ with self.conn.cursor() as cursor: cursor.execute(sql) return cursor.fetch() def close(self): """ close connection """ self.conn.close()def writeXlwt(filename,result): book=xlwt.Workbook() #打开一个工作薄 sheet1=book.add_sheet('sheel1')#添加一个sheet页 for i in range(len(result)+1): if i ==0: sheet1.row(i).write(0,'日期') sheet1.row(i).write(1,'小时') sheet1.row(i).write(2,'楼层') sheet1.row(i).write(3,'店铺号') sheet1.row(i).write(4,'店铺名称') sheet1.row(i).write(5,'人数') else: for a in range(len(result[i-1])): sheet1.row(i).write(a,result[i-1][a]) book.save(filename)def main(): """ main process """ try: hive_client = HiveClient(db_host='192.168.14.44', port=10000, user='hive', password='hive', database='test', authMechanism='PLAIN') sql = 'select * from test limit 10'#实例sql语句 result = hive_client.query(sql) hive_client.close() except pyhs2.error, tx: print '%s' % (tx.message) sys.exit(1) writeXlwt('test.xls',result)
if __name__ == '__main__': main()
阅读全文
0 0
- python 访问 hive2
- python访问hive2
- centos7下python连接 hive2
- hive2
- spark 2.1.1访问hive2.3.0
- hive2安装
- hive2:HIVE的结构
- 一步一步安装hive2,beeline
- java jdbc连接hive2
- hive2.0.0安装
- 使用java操作hive2
- Hive2 beeline 使用方法
- hive2 自定义验证登录
- hive2.1.0配置hwi
- Hive2.1.0安装配置
- hive2.1.0安装部署
- hive2.1安装
- Hive2.0.0安装配置
- AngularJS指令参数详解
- 子域名爆破工具Sublist3r在kali/parrot下的简单配置
- NSIS如何让安装程序的窗口置顶?(显示在最前端)
- ProgressBar 内部自定义颜色填充
- 由于AddressFilter在EndpointDispatcher不匹配,To 为“http://*/*”的消息无法在接收方处理。请检查发送方和接收方的 EndpointAddresses 是否一致
- python访问hive2
- 1012. 数字分类 (20)
- 代码整洁之道阅读笔记及感悟
- 大数据风雨十载,智能化进程将走向何方?
- 为了解决未来交通问题,这家企业要建一座最“in”的联合实验室
- DOM为列表框、下拉菜单添加、删除选项
- 覆盖19个城市19000个样本,零售业深度研究报告发布
- Enum(枚举类型)的应用
- 《Python学习手册》学习笔记(29)之第29章运算符重载(关键词:编程语言/Python/OOP/面向对象/重载)