我试图在Windows上的Eclise RSE远程机器(Ubuntu)上使用Hbase,thrift和python。一切正常,但是当我尝试连接到本地主机时,我收到错误:
thrift.transport.TTransport.TTransportException: Could not connect to localhost:9090
如果我通过远程计算机上的ssh终端运行此代码,它可以正常运行。
这是我的代码:
#!/usr/bin/env python
import sys, glob
sys.path.append('gen-py')
sys.path.insert(0, glob.glob('lib/py/build/lib.*')[0])
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
# Connect to HBase Thrift server
transport = TTransport.TBufferedTransport(TSocket.TSocket('localhost', 9090))
protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
# Create and open the client connection
client = Hbase.Client(protocol)
transport.open()
tables = client.getTableNames()
print(tables)
# Do Something
transport.close()
答案 0 :(得分:0)
你知道localhost的意思吗?它表示您正在运行命令的计算机。例如。如果我在我的电脑上的浏览器中输入http://localhost:8080/,那么它将调用在我的机器上的端口8080上运行的服务器。
如果您尝试在同一个盒子上连接到localhost,我确定您的连接正常。如果从另一台机器连接,那么您需要知道您要连接的盒子的IP地址或主机名。