1

我正在使用happybasepython 访问 Hbase。

我有一个非常简单的功能:

def connect():

    connection = happybase.Connection('myhost',myport)
    table = connection.table('MY-TABLE')
    try:
        return str(table.row('my-row'))
    except Exception as ioe:
        return str(ioe)
    finally:
        connection.close()

当我运行此功能时,它可以正常工作几分钟,然后我开始收到超时错误。

解决方法是进入 Hbase 控制台并打开一个新的节俭端口,然后指向它。

这再次工作了几分钟,然后我再次收到超时错误。

不是一个好的解决方法,知道为什么会发生这种情况吗?

编辑

这是错误:

`Traceback (most recent call last):
  File "appi.py", line 38, in <module>
    print connectx()
  File "appi.py", line 26, in connectx
    print str(table.row('1464242429566-2531079631688429'))
  File "C:\Users\me\Downloads\happybase-master\happybase-master\happybase\table.py", line 116, in row
    self.name, row, columns, {})
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\thrift.py", line 160, in _req
    return self._recv(_api)
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\thrift.py", line 172, in _recv
    fname, mtype, rseqid = self._iprot.read_message_begin()
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\protocol\binary.py", line 372, in read_message_begin
    self.trans, strict=self.strict_read)
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\protocol\binary.py", line 164, in read_message_begin
    sz = unpack_i32(inbuf.read(4))
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\transport\__init__.py", line 32, in read
    return readall(self._read, sz)
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\transport\__init__.py", line 14, in readall
    chunk = read_fn(sz - have)
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\transport\buffered\__init__.py", line 39, in _read
    self._rbuf = BytesIO(self._trans.read(max(sz, self._buf_size)))
  File "C:\Python27\lib\site-packages\thriftpy-0.3.8-py2.7.egg\thriftpy\transport\socket.py", line 108, in read
    buff = self.sock.recv(sz)
socket.timeout: timed out`
4

2 回答 2

2

hbase-site.xml通过设置将在其中可用的属性来增加超时hbase/conf

<property>
    <name>hbase.regionserver.lease.period</name>
    <value>900000</value> <!-- 900 000, 15 minutes -->
  </property>
  <property>
    <name>hbase.rpc.timeout</name>
    <value>900000</value> <!-- 15 minutes -->
  </property>
<property>
    <name>zookeeper.session.timeout</name>
    <value>20000</value>
</property>
于 2016-06-01T15:47:02.300 回答
1

您还可以增加happybase.Connection实例化的超时时间:

conn = happybase.Connection(server_url, 9090, timeout=100000)

有一个接受(但未发布)的拉取请求,要求将None其视为“永不超时”

于 2017-03-09T15:09:47.733 回答