我使用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
答案 0 :(得分:2)
问题出在这里 -
connection = happybase.Connection('ipaddress', '22')
thrift的默认端口是9090
。我将代码更改为
connection = happybase.Connection('ipaddress', 9090)
并获取了我的数据。