编译hive_service
/hadoop/hive-0.7.1-cdh3u5/src/service/if
修改hive_service.thrift中
include "/home/peter/libs/thrift-0.8.0/contrib/fb303/if/fb303.thrift"
include "/hadoop/hive-0.7.1-cdh3u5/src/metastore/if/hive_metastore.thrift"
include "/hadoop/hive-0.7.1-cdh3u5/src/ql/if/queryplan.thrift"
生成python程序thrift -r -gen py hive_service.thrift
启动thrift服务
hive --service hiveserver
测试
加点数据...
load data local inpath '/home/peter/test.data' into table test_db.peter_test;
python测试程序
#!/usr/bin/python
#-*-coding:UTF-8 -*-
'''
Created on 2012-9-10
@author: peter
'''
import os,sys
from hive_service import ThriftHive
from hive_service.ttypes import HiveServerException
from thrift.transport import TSocket
from thrift import Thrift
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
if __name__=='__main__':
try:
socket = TSocket.TSocket('127.0.0.1', 10000)
transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
sql = 'select * from test_hive.peter_test'
transport.open()
client.execute(sql)
with open('/home/peter/test.txt','w') as out_file:
while client.fetchOne():
out_file.write(client.fetchOne()+'\n')
transport.close()
except Thrift.TException, tx:
print'%s'%(tx.message)