2017-01-16 1 views
0

Cloudera Manager Express 5.9.0이 설치되어 있고, Centre 7.3에서 VirtualBox VM의 포트 9090에서 실행되는 Thrift 서버와 함께 HBase가 설치되어 있습니다.Python과 happybase/Thrift에서 Hbase에 연결

happybase를 통해 성공적으로 인터페이스 할 수없는 이유를 알아 내거나 다음 단계를 찾는 데 도움을주십시오.

필자는 경험 많은 Java 프로그래머로서 파이썬을 배우고 있습니다. 나는이 특정 환경이 아니지만 Java에서 기본 인터페이스를 사용하여 Hbase을 사용하는 경험이 있습니다.

  • 제가
  • I는 9090 (리사이클)를 수신하고 연결을 수락되었는지 검증 한 등, 테이블 작성 HBase를 쉘을 사용하여 데이터를 삽입 할 수 있음을 확인 하였다.
  • 드리프트 서버가 happybase 연결 매개 변수와 동일한 프로토콜/전송 설정으로 실행되고 있는지 확인했습니다. 나는이 실행 Thift 웹 서비스 관리자를

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

    :

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

    오류 메시지, 나는 훌륭한 참조를 찾을 수 없습니다 :

파이썬 스크립트 happybase 하우투에서 거의 직접 촬영 보고하는 포트 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의 차이점과 Thrift² happybase 지원의 부족을 알지 못했습니다. 답변으로 게시하면 답변을 수락합니다. – starvingmind

답변

1

지원되는 중고 버전의 중고품을 사용하고 계시지 않습니다.

올바른 프로토콜과 전송을 사용하여 thrift 1 (thrift2가 아닌) 데몬이 사용 되었습니까?

+0

해피베이스는 Thrift1 만 지원합니다. Thrift2에 대한 python 지원을 위해 다음을 시도하십시오. https://github.com/apache/hbase/blob/master/hbase-examples/src/main/python/thrift2/DemoClient.py – starvingmind

+0

@wouterbolsterlee 내 hbase 설치시 Thrift1 또는 Thrift2를 사용하고 있습니까? – Stanko