@
Jackliu91 又碰到了个 thrift 连接 hive 的 问题请教下啊,
先执行 hive --service hiveserver2 & 命令启动 hiveserver ,
然后执行脚本连接 hive 进行操作:
#
test.py#!/usr/bin/env python
import sys
from hive_service import ThriftHive
#!/usr/bin/env python
import sys
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:
print "%s" % (tx.message)
if __name__ == '__main__':
print "hello"
hiveExe("show tables")
就是执行一行简单的 查看所有表的语句,但是程序卡在 client.execute(sql) 这行就不动了。
请问这个问题怎么解决呢,,,
用 netstat 命令查看 10000 端口 hiveServer 是启动成功的。
$ netstat -nl |grep 10000
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN
在 CLI 里面也是可以正常进行 hive 查询操作的