无法使用 'put'() 将数据添加到带有 happybase 的 hbase

Can't use 'put'() to add data to hbase with happybase

我的python版本是3.7,在我运行pip3 install happybase之后,我开始命令hbase thrift start,试着写了一个简短的.py文件如下:

import happybase
connection = happybase.Connection('master')
table = connection.table('jmlr')   #'jmlr' is a table in hbase
for i in table.scan():
        print(i)
table.put('001', {'title':'dasds'})   #error here
connection.close()

快要运行table.put()的时候报这样的错误:

thriftpy2.transport.base.TTransportException: TTransportException(type=4, message='TSocket read 0 bytes')

同时thrift报错:

ERROR [thrift-worker-1] thrift.TBoundedThreadPoolServer: Error occurred during processing of message. java.lang.IllegalArgumentException: Invalid famAndQf provided.

但刚才我再次 运行 这个 python 文件,它在 thrift 中给了我一个不同的错误:

thrift.TBoundedThreadPoolServer: Thrift error occurred during processing of message. org.apache.thrift.protocol.TProtocolException: Bad version in readMessageBegin

我试过添加像protocol='compact', transport='framed'这样的参数,但这没有用,甚至table.scan()也失败了。 hbase shell里面的一切都还好,想不通哪里出了问题,快崩溃了。

我 运行 遇到了同样的问题并找到了这个解决方案。您甚至需要在 put() 方法中添加空列限定符(':' 符号作为列族和列限定符之间的分隔符):

table.put('001:', {'title':'dasds'}) 

此外,您在第二个 运行 脚本后收到不同的错误消息,因为 thrift 服务器已经失败。

希望对你有所帮助