文档章节

python通过thrift方式连接hive

aibati2008
 aibati2008
发布于 2016/04/29 15:31
字数 477
阅读 1315
收藏 5

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
粉丝 14
博文 87
码字总数 61726
作品 0
成都
技术主管
私信 提问
Hive 使用陷阱(Lock table) 排查过程

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

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

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

snakelxc
2013/08/11
500
1
python通过thrift方式连接hive问题

根据某高手前辈的链接安装好thrift和相亲包,执行如下测试脚本出现无法连接的情况。 #!/usr/bin/env python import sys from hive_service import ThriftHive from hive_service.ttypes impo...

漫步夕阳
2013/02/28
3.6K
2
Java进行Hive的连接和访问

今天看了一遍不错的文章,关于Java访问Hive的,正好要用到这一块,分享到此以便更多的人可以学习和应用 非常感谢博主的总结和分享 博文链接: https://www.jianshu.com/p/4ef28607fc04 Hive内...

aiChuang
09/06
46
0
Hive 和 HBase 的快速入门

即使是有一些正式的文档,构建以HBase为后端的Hive仍然是多少需要一些技巧的。希望这份手册能让你入门快一些。本文假定你已经安装好HBase,如果没有,参考我写的另一篇文章 HBase 快速入门。...

oschina
2013/05/14
2.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

安全组和云防火墙的区别

前言 熟悉云平台的朋友可能都会注意到这样一个事情:无论公有云还是私有云,创建虚拟机的时候都需要选择安全组,来对虚拟机进行安全防护;有的云平台在VPC里,还能选择防火墙,ZStack在3.6版...

ZStack社区版
35分钟前
3
0
教育性app开发的重要性和好处

在这个精通技术的世界中,流行的app主导着无聊的教育系统。当我们将技术和教育结合在一起时,它将带来当代以及强大的学习资源。因此,将教育移动app集成到您的学习过程中,并根据自己的信念把...

a429011717
36分钟前
4
0
IE6/7/8如何兼容CSS3属性

本文转载于:专业的前端网站➩IE6/7/8如何兼容CSS3属性 最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc。个人认为这两个文件的作用差不...

前端老手
51分钟前
5
0
手把手教你ALLEGRO的约束规则的设置教程!

约束规则的设置 分三步, 定义规则(一、基本约束规则设置:1、线间距设置;2、线宽设置;3、设置过孔;4、区域约束规则设置;5、设置阻抗;6、设置走线的长度范围;7、设置等长:7.1、不过电阻的NET 等...

demyar
53分钟前
5
0
完美解决H5滚动滑动穿透方案:不使用系统滚动

网上有很多黑科技解决这个问题,都不是从根本去解决,例如通过js控制弹出时html加上position:fixed; 弹窗关闭后再去掉该样式,总觉得不太对,像是打补丁。 今天终于找到了滚动穿透的原因和完...

未来cc
58分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部