无法使用 '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 服务器已经失败。
希望对你有所帮助
我的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 服务器已经失败。
希望对你有所帮助