python-操作hive
python访问hive2
HiveServer2为客户端在远程执行hive查询提供了接口,通过Thrift RPC来实现,还提供了多用户并发和认证功能。目前使用python的用户可以通过pyhs2这个模块来连接HiveServer2,实现查询和取回结果的操作。
1.安装pyhs2
pip install pyhs2
yum install cyrus-sasl-plain
yum 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 pyhs2
import xlrd
import xlwt
import sys default_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()
python-操作hive的更多相关文章
- python操作hive 安装和测试
方法一:使用pyhive库 如上图所示我们需要四个外部包 中间遇到很多报错.我都一一解决了 1.Connection Issue: thrift.transport.TTransport.TTrans ...
- python操作hive并且获取查询结果scheam
执行hive -e 命令并且获取对应的select查询出来的值及其对应的scheam字段 需要在执行语句中前部添加 set hive.cli.print.header=true; 这个设置,如下语句: ...
- Hive 教程(九)-python with hive
本文介绍用 python 远程连接 hive,此时需要 hive 启动 hiveserver2 服务 windows 下报如下错误 thrift.transport.TTransport.TTrans ...
- 通过 Spark R 操作 Hive
作为数据工程师,我日常用的主力语言是R,HiveQL,Java与Scala.R是非常适合做数据清洗的脚本语言,并且有非常好用的服务端IDE——RStudio Server:而用户日志主要储存在hive ...
- 1、Java通过JDBC操作Hive
0.概述 使用的都是CLI或者hive –e的方式仅允许使用HiveQL执行查询.更新等操作.然而Hive也提供客户端的实现,通过HiveServer或者HiveServer2,客户端可以在不启动CL ...
- Java通过JDBC操作Hive
http://www.cnblogs.com/netbloomy/p/6688670.html 0.概述 使用的都是CLI或者hive –e的方式仅允许使用HiveQL执行查询.更新等操作.然而Hiv ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
随机推荐
- Python爬虫实战(2):爬取京东商品列表
1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反 ...
- Python学习笔记(三)Python的list和tuple
list list类似其他语言中的数组,是一种有序的集合,可以随时添加和删除其中的元素. 使用len()函数可以获得list元素的个数. list的索引从0开始,当超出范围时会报IndexError错 ...
- Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AS" in the equal to operation.
Scenario : 这个问题是我的存储过程中用到临时表时发生的. 应该是sql server 服务器的排序规则 (SQL_Latin1_General_CP1_CI_AS ) 与数据库的排序规则(C ...
- Linux查看所有用户用什么命令1
用过Linux系统的人都知道,Linux系统查看用户不是会Windows那样,鼠标右键看我的电脑属性,然后看计算机用户和组即可. 那么Linux操作系统里查看所有用户该怎么办呢?用命令.其实用命令 ...
- CloudEra Email Search
http://blog.cloudera.com/blog/2013/09/email-indexing-using-cloudera-search/ http://blog.cloudera.com ...
- 2014第11周四Eclipse开发问题记
今天开发中eclipse工具使用上又学到几点: 1.去除代码空行:在Find输入框中输入:^\s*\n然后替换为空即可: 2.eclipse插件的加载:对于单一个jar文件的插件,直接放在plugin ...
- structs常用的Action
今天座右铭-----谦虚使人进步,骄傲使人落后. 除了基本的Action之外,structs还提供几个其他的类型Action,下面就简单的说一下: 1.DispatchAction:能同时完成多个Ac ...
- 安装virtualbox虚拟机的增强功能
转自:http://wubangtu.com/714 最近有很多人问我这个问题,现在全部写在这里,免得到时候又啰嗦一遍了,哈哈.欢迎大家前来围观: 安装virtualbox虚拟机的增强功能可以实现如下 ...
- Android studio 安装,JDK 出错解决方案
在安装android studio 的时候,会报一个错误: --------------------------- Error launching Android Studio ----------- ...
- MySQL 查询结果以百分比显示
找了一些资料,然后我是用到了MySQL字符串处理中的两个函数concat()和left()1.[CONCAT(str1,str2,...) 返回来自于参数连结的字符串.如果任何参数是 NULL, 返 ...