我正在开发一个项目,我试图通过来自C#客户端的thrift服务器与HBase服务器进行通信。
我已经设置了HBase服务器。我能够打开插座。
调用API:_hbase.getTableNames()
时,会抛出异常;我介入了这个功能,
它内部调用 - send_getTableNames();
和recv_getTableNames();
。
第一个函数传递(内部它们正在写入套接字),但在第二个函数中 他们试图从套接字读取函数,客户端thrift代码接收零字节, 因此,这是一个例外。
这可能是什么原因?
注意:服务器上安装了HBase 0.92.0,并使用了thrift服务器端附带的HBase.thrift。 但在客户端,我们使用的是HBase 0.94.0附带的HBase.thrift文件。 我猜这可能是原因(虽然我可能不正确)。
以下是客户端的代码段失败:
transport.Open();
var names = _hbase.getTableNames();
答案 0 :(得分:0)
我在EMR上使用AWS HBase,然后通过HBase服务器调整thrift服务器。在设置thrift服务器时,AWS管理控制台中有一个选项可用于设置允许的IP地址和端口号。我允许端口号为9000,但是thrift服务器侦听端口号9090.一旦我将端口号9090添加到允许的端口号列表,我就可以连接到它。