python happybase TTransportException(type=4, message=TSocket read 0 bytes)

问题:使用happybase连接池操作HBASE一直出现 TTransportException(type=4, message=‘TSocket read 0 bytes’) 这个错误

原因1: 客户端链接hbase时传输协模式与协议与thriftpy服务端不匹配。可更改为 h_conn = happybase.Connection( host=“host”,port=port, transport=‘framed’, protocol=‘compact’ )

原因二:操作完hbase时with不会默认close thriftpy的socket链接,而HBASE的服务端有默认为60秒的超时后会主动断开,而操作者的连接池不知道,导致TTransportException(type=4, message=‘TSocket read 0 bytes’) 这个错误

原因三:第三个原因与第二个类似,但是现象有所不同。我简单的描述一下现象:当首次初始化好happybase连接池后,一直未操作查数据,过一会后,大概60秒再操作会出现标题中的问题。 原因是,happybase默认初始化链接池后,会默认去向hbase做一次链接(如下图),但为close,我个人认为这也是happybase这个包的bug。解决这个问题的办法就是,初始化好链接后,立刻做一次查询(比如查看hbase有哪些表)后close掉这个链接。可能大家会问,做查询的这个链接怎么保证就是happybase初始化的那个链接,其实只要看看源码就知道,happybase的连接池是维护的一个队列,所以第一次查询肯定是这个happybase包默认初始化而未释放的链接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值