无法在Python中使用Happybase创建简单表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Python中使用Happybase创建简单表相关的知识,希望对你有一定的参考价值。

我正在尝试使用Happybase创建一个表。首先,我输入以下命令,让Hbase和Thrift运行:

start-hbase.sh
hbase thrift start &

一旦运行,我打开Python的命令提示符并输入以下内容:

import happybase as hb
connection = hb.Connection()
connection.open()

但是,当我尝试创建一个表时:

connection.create_table(
'mytable',
{'cf1': dict(max_versions=10),
 'cf2': dict(max_versions=1, block_cache_enabled=False),
 'cf3': dict(),  # use defaults
}

我得到以下错误,我只是不明白。

Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
  File "/usr/local/lib/python2.7/dist-packages/happybase/connection.py", line 309, in create_table
    self.client.createTable(name, column_descriptors)
  File "/usr/local/lib/python2.7/dist-packages/thriftpy/thrift.py", line 198, in _req
    return self._recv(_api)
  File "/usr/local/lib/python2.7/dist-packages/thriftpy/thrift.py", line 210, in _recv
    fname, mtype, rseqid = self._iprot.read_message_begin()
  File "thriftpy/protocol/cybin/cybin.pyx", line 429, in cybin.TCyBinaryProtocol.read_message_begin (thriftpy/protocol/cybin/cybin.c:6325)
  File "thriftpy/protocol/cybin/cybin.pyx", line 60, in cybin.read_i32 (thriftpy/protocol/cybin/cybin.c:1546)
  File "thriftpy/transport/buffered/cybuffered.pyx", line 65, in thriftpy.transport.buffered.cybuffered.TCyBufferedTransport.c_read (thriftpy/transport/buffered/cybuffered.c:1881)
  File "thriftpy/transport/buffered/cybuffered.pyx", line 69, in thriftpy.transport.buffered.cybuffered.TCyBufferedTransport.read_trans (thriftpy/transport/buffered/cybuffered.c:1948)
  File "thriftpy/transport/cybase.pyx", line 61, in thriftpy.transport.cybase.TCyBuffer.read_trans (thriftpy/transport/cybase.c:1472)
  File "/usr/local/lib/python2.7/dist-packages/thriftpy/transport/socket.py", line 125, in read
    message='TSocket read 0 bytes')
thriftpy.transport.TTransportException: TTransportException(message='TSocket read 0 bytes', type=4)
)
答案

您需要指定服务器地址,并可能指定端口:

connection = hb.Connection(SERVER, PORT)

您可以省略端口值,因为很可能默认值将匹配,但以防万一检查您的thrift服务器正在侦听的端口并将其指定为数值

以上是关于无法在Python中使用Happybase创建简单表的主要内容,如果未能解决你的问题,请参考以下文章

Python操作HBase之happybase

python 带有行过滤器的happybase连接池演示

在 HappyBase HBase 客户端中设置 Zookeeper 节点(znode)设置

happybase对hbase数据库的基本操作

happybase 的连接池

如何使用单个 API 调用扫描 HappyBase 中的行集?