Chinaunix首页 | 论坛 | 博客
  • 博客访问: 829927
  • 博文数量: 167
  • 博客积分: 7173
  • 博客等级: 少将
  • 技术积分: 1671
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-04 23:07
文章分类

全部博文(167)

文章存档

2018年(1)

2017年(11)

2012年(2)

2011年(27)

2010年(88)

2009年(38)

分类: 云计算

2011-09-29 19:15:23


当使用hadoop成为web日志或生产日志的存储池后,我们可以使用./hive登录到hive shell中
进行查询操作。但为了方便,在查询方面用python进行封装好相应方法进行使用,用java进行我们的统计分析。

使用hive客户端的相关功能只需要将${hive_home}/lib/py路径加入但python的运行环境路径中就行了。
如以下脚本:


#/usr/bin/env python
#-*- coding: utf-8 -*-

import os,sys

dir = os.path.dirname(os.path.realpath(sys.argv[0]))

sys.path.insert(0, dir + '/lib/py')  ####引入相关python for hive 的相关环境


from hive_service import ThriftHive
from hive_service.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol


def hiveExe(sql):
    try:
        transport = TSocket.TSocket('192.168.237.13', 10000)
        transport = TTransport.TBufferedTransport(transport)
        protocol = TBinaryProtocol.TBinaryProtocol(transport)
        client = ThriftHive.Client(protocol)
        transport.open()
        client.execute(sql)
        print "The return value is : "+client.fetchOne()
        transport.close()
    except Thrift.TException, tx:
        print '%s' % (tx.message)

if __name__ == '__main__':
     print hiveExe("select * from img_ana limit 2")
阅读(1722) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~