Python 连接 hive 查询数据

<!-- lang:shell -->
Jps   jdk 1.5 时引入的一个工具, 可以用来查看当前主机所有  java 进程的ID 的一个命令行工具。
[root@PROC_141 htt]# jps
966 CassandraDaemon
22070 NameNode
2471 Jps
22218 DataNode
22426 SecondaryNameNode
10763 Elasticsearch
15019 ResourceManager
22779 NodeManager 
2302 RunJar    # 为  hive 的 进程 ID,



<!-- lang: shell -->
hive --service hiveserver        # 此时 hive 监听  10000 端口



<!-- lang: python -->
#!/usr/bin/env python
import sys
import traceback
sys.path.append('/opt/old/htt/hadoop/apache-hive-0.13.1-bin/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

def hiveExe(sql):

    try:
        transport = TSocket.TSocket('127.0.0.1', 10000) 
        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:
    traceback.print_exc()
        print 'exception %s' % (tx.message)

if __name__ == '__main__':
    hiveExe("select * from test")


返回值如下,  !目前还没有感觉比 普通的数据库快多少啊。。
<!-- lang: shell -->
[root@PROC_141 htt]# python2.7  hive_python.py 
The return value is : 
['NULL\tNULL', 'NULL\tNULL', 'NULL\tNULL']
 ............

你可能感兴趣的:(Python 连接 hive 查询数据)