首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python连接到Hbase,并连接happybase / Thrift

从Python连接到Hbase,并连接happybase / Thrift
EN

Stack Overflow用户
提问于 2017-01-16 17:02:49
回答 3查看 5K关注 0票数 0

我已经安装了5.9.0安装了HBase,并在CentOS 7.3的VirtualBox vm中的端口9090上运行了VirtualBox服务器。

请帮助找出为什么我不能成功地通过快乐基础进行界面,或帮助确定下一步的追求。

我是一个经验丰富的Java程序员,学习Python。我有使用本机接口使用来自Java的Hbase的经验,虽然不是在这个特定的环境中。

  • 我已经验证了我可以使用hbase shell创建表、插入数据等等。
  • 我已经验证了9090 (节俭)是倾听和接受连接。
  • 我想,我已经验证了,Thrift服务器运行的协议/传输设置与喜怒哀乐的连接参数相同。

Python脚本实际上是直接从获得的:

代码语言:javascript
复制
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
    }
)

错误消息,我找不到很好的参考:

代码语言:javascript
复制
[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服务管理器,它报告:

代码语言:javascript
复制
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

任何帮助都是非常感谢的。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-19 22:20:06

我想您不是在使用支持的节俭守护进程版本。

您确定使用了具有正确协议和传输的节俭1(而不是thrift2)守护进程吗?

票数 2
EN

Stack Overflow用户

发布于 2017-01-19 22:31:29

幸福基础只支持Thrift1。

对于使用Thrift2支持hbase的python,请尝试如下:https://github.com/apache/hbase/blob/master/hbase-examples/src/main/python/thrift2/DemoClient.py

票数 4
EN

Stack Overflow用户

发布于 2020-03-08 07:45:08

我也遇到了同样的问题,在花了40+几个小时之后,我发现在Cloudera中:

settings->network->advance->port forwarding

您需要添加新的端口9090和9095(可选)以使其工作。

由于某些原因,在Cloudera映像中默认没有添加此端口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41681432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档