2017-01-16 15 views
0

Я установил Cloudera Manager Express 5.9.0, установленный HBase, с сервером Thrift, работающим на порту 9090 на CentOS 7.3 в VirtualBox vm.Подключиться к Hbase из Python и happybase/Thrift

Пожалуйста, помогите разобраться, почему я не могу успешно взаимодействовать через happybase или помочь определить следующие шаги для продолжения.

Я опытный Java-программист, изучая Python. У меня есть опыт использования Hbase из Java с использованием собственного интерфейса, хотя и не в этой конкретной среде.

  • Я подтверждено, что я могу использовать Hbase оболочку для создания таблиц, вставки данных и т.д.
  • Я подтверждено, что 9090 (бережливость) слушает и принимает подключения.
  • Я думаю, что я подтвердил, что сервер Thrift работает с теми же настройками протокола/транспорта, что и параметры соединения happybase.

Python скрипт взят практически прямо из happybase МЕТОДИЧЕСКИЕ:

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 
    } 
) 

Сообщение об ошибке, которое я не могу найти большую ссылку для:

[[email protected] ~]# 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) 
[[email protected] ~]# 

У меня есть Thift менеджер веб-службы, работающие на порт 9095, который сообщает:

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 

Любой он lp очень ценится. Спасибо.

+0

вы уверены, что бережливость 1 (не thrift2) демон используется, с правом протокола и транспорта? –

+0

Wouter - ставка, что вы правы. Я не знал о различиях Thrift1/2 и отсутствии поддержки HappyBase от Thrift². Я отвечу, если вы опубликуете ответ. – starvingmind

ответ

1

Я предполагаю, что вы не используете поддерживаемую версию демона бережливости.

Вы уверены, что демон бережливого 1 (не thrift2) используется с правильным протоколом и транспортом?

+0

Happybase поддерживает только Thrift1. Для поддержки python для Thrift2 попробуйте это: https://github.com/apache/hbase/blob/master/hbase-examples/src/main/python/thrift2/DemoClient.py – starvingmind

+0

@wouterbolsterlee Где я могу увидеть, если моя hbase установка использует Thrift1 или Thrift2? – Stanko