文档章节

python通过thrift方式连接hive

aibati2008
 aibati2008
发布于 2016/04/29 15:31
字数 477
阅读 1165
收藏 4
点赞 1
评论 0

hive安装完成后,如果只是本地使用,启用

nohup hive --service metastore &

[hadoop@master1 usr]$ hive

Logging initialized using configuration in file:/data/usr/hive/conf/hive-log4j.properties
hive> use fmcm;
OK
Time taken: 0.874 seconds

如果是要脚本调用,则需要启用HiveServer2,确保10000端口已经被监听(可在hive-site.xml中修改端口)

 nohup hive --service hiveserver2 &

[hadoop@master1 usr]$ netstat -an|grep 10000            
tcp        0      0 0.0.0.0:10000           0.0.0.0:*               LISTEN    

 

HiveServer2为客户端在远程执行hive查询提供了接口,通过Thrift RPC来实现,还提供了多用户并发和认证功能。目前python可以通过pyhs2这个模块来连接HiveServer2,实现查询和取回结果的操作。

不过pyhs2已经不在维护,追新的可以参考另外2个很好的python package(已经被证明pyhs2存在性能瓶颈,最好尽快切换到pyhive)

https://github.com/dropbox/PyHive

https://github.com/cloudera/impyla

 

安装sasl失败的话,先安装:
yum install gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64

pyhs2的项目托管在github之上,地址为https://github.com/BradRuderman/pyhs2或在https://pypi.python.org/pypi/pyhs2/0.2直接下载

 

如果安装不成功,可以尝试先安装以下的组件:

yum install cyrus-sasl-plain
yum install cyrus-sasl-devel

安装时如果遇到报错: 

error: sasl/sasl.h: No such file or directory 

可以尝试先安装sasl , ubantu可以用sudo apt-get install libsasl2-dev, CentOS可以使用anaconda的pip安装, 或者按照以下步骤安装:

 

curl -O -L ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-2.1.26.tar.gz
tar xzf cyrus-sasl-2.1.2.26.tar.gz
cd cyrus-sasl-2.1.26.tar.gz
./configure && make install


最后附上测试代码:
# -*- coding:utf-8 -*-
'''
采用Hive和thrift方式连接数据库
'''
import pyhs2
import sys
reload(sys)
sys.setdefaultencoding('utf8')

class HiveClient:
    def __init__(self, db_host, user, password, database, port=10000, authMechanism="PLAIN"):
      
        self.conn = pyhs2.connect(host=db_host,
                                  port=port,
                                  authMechanism=authMechanism,
                                  user=user,
                                  password=password,
                                  database=database,
                                  )

    def query(self, sql):
        with self.conn.cursor() as cursor:
            cursor.execute(sql)
            return cursor.fetch()

    def close(self):
        self.conn.close()


def main():
    """
    main process
    @rtype:
    @return:
    @note:

    """
    hive_client = HiveClient(db_host='10.24.33.3', port=10000, user='hadoop', password='hadoop',
                             database='fmcm', authMechanism='PLAIN')
    result = hive_client.query('select * from fm_news_newsaction limit 10')
    print result
    hive_client.close()


if __name__ == '__main__':
    main()

 

© 著作权归作者所有

共有 人打赏支持
aibati2008
粉丝 12
博文 81
码字总数 60745
作品 0
成都
技术主管
Hive 使用陷阱(Lock table) 排查过程

前言 业务部门使用python通过hive thrift api做数据统计,早段时间发现在频繁创建表的时候,接口会卡死。经过一番的排查,是因为hive的lock table manager特性对于hive server的接口服务不兼...

kisops
2013/08/11
0
6
Hive 使用陷阱(Lock table) 排查过程

前言 业务部门使用python通过hive thrift api做数据统计,早段时间发现在频繁创建表的时候,接口会卡死。经过一番的排查,是因为hive的lock table manager特性对于hive server的接口服务不兼...

snakelxc
2013/08/11
0
1
Python 连接 hive 查询数据

[root@PROC_141 htt]# jps966 CassandraDaemon22070 NameNode2471 Jps22218 DataNode22426 SecondaryNameNode10763 Elasticsearch15019 ResourceManager22779 NodeManager2302 RunJar # 为 ......

MtrS
2014/12/23
0
0
hive+python数据分析入门

本文首先发布在: http://leanote.com/blog/view/539276d41a91080a06000002 本文作者系 leanote 的核心开发者, 多谢关注leanote. leanote官网, leanote github 为什么要使用hive+python来分析...

lifephp
2014/06/07
0
2
【电子书】Hadoop实战手册 (样章第一章)

Hadoop实战手册 [美] Jonathan R. Owens,Jon Lentz,Brian Femiano 著; 傅杰,赵磊,卢学裕 译 内容简介   这是一本Hadoop实用手册,主要针对实际问题给出相应的解决方案。《Hadoop实战手...

dwf07223
06/28
0
0
Python数据科学(八)- 资料探索与资料视觉化

传送门: Python数据科学(一)- python与数据科学应用(Ⅰ) Python数据科学(二)- python与数据科学应用(Ⅱ) Python数据科学(三)- python与数据科学应用(Ⅲ) Python数据科学(四)- 数据收...

_知几
05/22
0
0
更新hive元数据-python代码

因为之前平台部署的hive下的元数据是放在mysql中的,而mysql由设置了为了拉丁文,导致元数据都是乱码的。 于是开始了更新计划,办法就是用svn中的建表语句,提取出来写到元数据的mysql下,然...

yuppy_zyp
2017/11/14
0
0
centos5.5 安装python2.6--171

22 yum install sqlite-devel -y 23 wget -c http://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2 24 tar zxvf thrift-0.8.0.tar.gz >/dev/null 25 cd thrift-0.8.0 26 ll 27 ./config......

DaddysGirl
07/01
0
0
Python连接到HiveServer2

环境配置 首先安装Python包: sasl pyhs2 pyhs2项目作者2014年之后就没有更新了。 代码样例 使用KERBEROS pyhs2地址 https://github.com/BradRuderman/pyhs2/...

COSE
2017/10/18
0
0
使用PySpark编写SparkSQL程序查询Hive数据仓库

作业脚本采用Python语言编写,Spark为Python开发者提供了一个API-----PySpark,利用PySpark可以很方便的连接Hive 下面是准备要查询的HiveSQL 下面是准备提交的Python脚本 脚本开头指定utf8编...

teaGod
04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql 主从复制中遇到的错误!

。。。。。

万建宁
13分钟前
0
0
DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
24分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
27分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
28分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
33分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
35分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
37分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
38分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
40分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
43分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部