#!/usr/bin/python
import sys
sys.path.append('/home/zhoujie/Downloads/hive-0.7.0-cdh3u0/lib/py')
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
hive_server_ip='127.0.0.1'
hive_server_port=10000
#hive_sql='select count(*) from ssp_factbids'
hive_sql="select count(*) from ssp_factbids where logdate_id='20121101'"
def hiveExe(sql):
try:
transport = TSocket.TSocket(hive_server_ip, hive_server_port)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute(sql)
print "The return value is : "
print client.fetchAll()
print "............"
transport.close()
except Thrift.TException, tx:
print '%s' % (tx.message)
if __name__ == '__main__':
hiveExe(hive_sql)
多线程访问,代码如下:
#!/usr/bhrin/python
import sys
import threading
import datetime,time
sys.path.append('/home/zhoujie/Downloads/hive-0.7.0-cdh3u0/lib/py')
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
THREAD_COUNT = 10
hive_server_ip='127.0.0.1'
hive_server_port=10000
#hive_sql='select count(*) from ssp_factbids'
#hive_sql="select count(*) from ssp_factbids where logdate_id='20121101'"
hive_sql="select count(*) from ssp_cloud_bi.factbids"
#hive_sql="show databases"
def hiveExe(sql):
try:
transport = TSocket.TSocket(hive_server_ip, hive_server_port)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute(sql)
print "The return value is : "
print client.fetchAll()
print "............"
transport.close()
except Thrift.TException, tx:
print '%s' % (tx.message)
def worker():
hiveExe(hive_sql)
if __name__ == '__main__':
#hiveExe(hive_sql)
starttime = datetime.datetime.now()
thread_pool = []
for i in range(THREAD_COUNT):
th = threading.Thread(target=worker)
thread_pool.append(th)
for i in range(THREAD_COUNT):
thread_pool[i].start()
for i in range(THREAD_COUNT):
threading.Thread.join(thread_pool[i])
endtime = datetime.datetime.now()
print "Main Thread End at : ", endtime, "time span ", endtime-starttime