[英]Connect to Hbase from Python and happybase / Thrift
我已经安装了 Cloudera Manager Express 5.9.0 安装了 HBase,Thrift 服务器在 VirtualBox 虚拟机中的 CentOS 7.3 上的端口 9090 上运行。
请帮助找出我无法通过happybase 成功连接的原因,或帮助确定下一步要采取的措施。
我是一名经验丰富的 Java 程序员,正在学习 Python。 我有使用本机接口从 Java 使用 Hbase 的经验,尽管不是在这个特定环境中。
几乎直接从 happybase howto 获取的 Python 脚本:
import happybase
connection = happybase.Connection(host='localhost',port=9090,transport='buffered', protocol='compact')
connection.create_table('mytable',
{'cf1': dict(max_versions=10),
'cf2': dict(max_versions=1, block_cache_enabled=False),
'cf3': dict(), # use defaults
}
)
错误消息,我找不到很好的参考:
[root@data1 ~]# python testhbase.py
Traceback (most recent call last):
File "testhbase.py", line 10, in <module> 'cf3': dict(), # use defaults
File "build/bdist.linux-x86_64/egg/happybase/connection.py", line 311, in create_table
File "/usr/lib64/python2.7/site-packages/thriftpy/thrift.py", line 198, in _req return self._recv(_api)
File "/usr/lib64/python2.7/site-packages/thriftpy/thrift.py", line 210, in _recv fname, mtype, rseqid = self._iprot.read_message_begin()
File "/usr/lib64/python2.7/site-packages/thriftpy/protocol/compact.py", line 147, in read_message_begin % proto_id)
thriftpy.protocol.exc.TProtocolException: TProtocolException(type=4)
[root@data1 ~]#
我在端口 9095 上运行 Thift Web 服务管理器,它报告:
HBase Version 1.2.0-cdh5.9.0, rUnknown HBase version and revision
Thrift Impl Type threadpool Thrift RPC engine implementation type chosen by this Thrift server
Compact Protocol true Thrift RPC engine uses compact protocol
Framed Transport false Thrift RPC engine uses framed transport
任何帮助是极大的赞赏。 谢谢你。
Happybase 只支持 Thrift1。
对于使用 Thrift2 的 hbase 的 python 支持,试试这个: https : //github.com/apache/hbase/blob/master/hbase-examples/src/main/python/thrift2/DemoClient.py
我猜您没有使用受支持的 thrift 守护程序版本。
您确定使用了 thrift 1(不是 thrift2)守护进程,并且使用了正确的协议和传输?
我遇到了同样的问题,在花了 40 多个小时后,我在 Cloudera VM 中发现了这一点:
settings->network->advance->port forwarding
您需要添加新的端口 9090 和 9095(可选)才能使其工作。
出于某种原因,默认情况下未在 Cloudera 映像中添加此端口
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.