我正在使用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
最佳答案
问题出在这里
connection = happybase.Connection('ipaddress', '22')
节俭的默认端口为
9090
。我将代码更改为connection = happybase.Connection('ipaddress', 9090)
得到我的数据
关于python - 尝试运行table.scan()时,为什么happybase返回“TSocket读取0字节”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34726995/