0

我正在尝试在 Windows 上的 Eclise RSE 的远程机器(Ubuntu)上使用 Hbase、thrift 和 python。一切正常,但是当我尝试连接到 localhost 时出现错误:

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() 
4

1 回答 1

0

你知道本地主机是什么意思吗?这意味着您正在运行命令的机器。例如,如果我在 PC 上的浏览​​器中键入http://localhost:8080/,那么它将调用在我机器上的端口 8080 上运行的服务器。

如果您在同一个盒子上尝试连接到 localhost,我相信您的连接工作正常。如果从另一台机器连接,那么您需要知道要连接的机器的 IP 地址或主机名。

于 2015-02-24T10:15:35.547 回答