为什么happybase在运行table.scan()时返回“tsocket read 0 bytes”?

qnakjoqk  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(490)

我正在使用happybase连接到hbase。到目前为止,连接良好。我们节俭起来了。我可以连接到表(afaik),但是当我尝试扫描表时 TTransportException: TSocket read 0 bytes . 这是我正在使用的代码。

import happybase
import json

connection = happybase.Connection('ipaddress', '22')

table = connection.table('rawdataingestion')

for key, data in table.scan():
    print key, data
    break

我在这里使用break,这样它就不会打印出google行了。我只想看到它正在建立连接并引入数据。
这是错误。

---> 38 for key, data in table.scan():
     39     print key, data
     40     break

/root/anaconda/lib/python2.7/site-packages/happybase/table.pyc in scan(self, row_start, row_stop, row_prefix, columns, filter, timestamp, include_timestamp, batch_size, scan_batching, limit, sorted_columns)
    372             )
    373             scan_id = self.connection.client.scannerOpenWithScan(
--> 374                 self.name, scan, {})
    375 
    376         logger.debug("Opened scanner (id=%d) on '%s'", scan_id, self.name)

/root/anaconda/lib/python2.7/site-packages/happybase/hbase/Hbase.pyc in scannerOpenWithScan(self, tableName, scan, attributes)
   1917     """
   1918     self.send_scannerOpenWithScan(tableName, scan, attributes)
-> 1919     return self.recv_scannerOpenWithScan()
   1920 
   1921   def send_scannerOpenWithScan(self, tableName, scan, attributes):

/root/anaconda/lib/python2.7/site-packages/happybase/hbase/Hbase.pyc in recv_scannerOpenWithScan(self)
   1930 
   1931   def recv_scannerOpenWithScan(self, ):
-> 1932     (fname, mtype, rseqid) = self._iprot.readMessageBegin()
   1933     if mtype == TMessageType.EXCEPTION:
   1934       x = TApplicationException()

/root/anaconda/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.pyc in readMessageBegin(self)
    138         raise TProtocolException(type=TProtocolException.BAD_VERSION,
    139                                  message='No protocol version header')
--> 140       name = self.trans.readAll(sz)
    141       type = self.readByte()
    142       seqid = self.readI32()

/root/anaconda/lib/python2.7/site-packages/thrift/transport/TTransport.pyc in readAll(self, sz)
     56     have = 0
     57     while (have < sz):
---> 58       chunk = self.read(sz - have)
     59       have += len(chunk)
     60       buff += chunk

/root/anaconda/lib/python2.7/site-packages/thrift/transport/TTransport.pyc in read(self, sz)
    157       return ret
    158 
--> 159     self.__rbuf = StringIO(self.__trans.read(max(sz, self.__rbuf_size)))
    160     return self.__rbuf.read(sz)
    161 

/root/anaconda/lib/python2.7/site-packages/thrift/transport/TSocket.pyc in read(self, sz)
    118     if len(buff) == 0:
    119       raise TTransportException(type=TTransportException.END_OF_FILE,
--> 120                                 message='TSocket read 0 bytes')
    121     return buff
    122 

TTransportException: TSocket read 0 bytes
wz3gfoph

wz3gfoph1#

问题就在这里-

connection = happybase.Connection('ipaddress', '22')

thrift的默认端口是 9090 . 我把密码改成

connection = happybase.Connection('ipaddress', 9090)

得到了我的数据。

相关问题