全部产品

多语言(C++/Python/Go等)API访问

更新时间:2019-08-05 11:58:56

简介

HBase增强版通过Thrift支持多语言访问,只要是Thrift支持的语言,都可以访问HBase增强版。HBase增强版服务端的Thrift版本是0.12.0,虽然说thrift支持向后兼容,但如果有条件的用户,最好还是下载0.12.0的thrift。点击这里下载

HBase增强版使用的Thrift接口定义是HBase的thrift2。因此需要下载thrift2的定义文件生成相应语言的接口。相比thrift1定义,HBase中的thrift2接口定义更加清晰,用户可以获得和Java语言类似的API调用体验。之前的thrift2之所以使用不广泛是因为thrift2的接口不全,不支持建表删表等DDL操作。但是目前thrift2相关的API定义已经由阿里云的开发人员补全并回馈给了社区(HBASE-21649)。目前thrift2比thrift1的功能更全而且更容易使用。

准备

  1. 下载Thrift安装包,点击这里下载
  2. 下载HBase Thrift2定义文件
  3. 获取集群的连接地址,多语言访问使用的连接为连接信息中的“非 JAVA 语言 Thrift2 访问地址”访问地址部分(注意专有网络地址和外网地址的区别)。

访问

Thrift的使用帮助可以参考Apache Thrift的官方文档,下面给出简单的使用方法。

1.生成对应语言的接口定义文件

从上述地址下载接口定义文件后,按照如下语法生成接口定义文件

  1. thrift --gen <language> Hbase.thrift

例如:

  1. thrift --gen php Hbase.thrift
  2. thrift --gen cpp Hbase.thrift
  3. thrift --gen py Hbase.thrift

2. 构造客户端访问HBase增强版

HBase增强版Thrift服务器端的transport层使用的是HTTP,因此在构造客户端时,需要thrift中的ThttpClient(各个语言都有相应实现)。并且在ACL开启的情况下,需要在ThttpClient上加上两个header来向服务器传输用户名和密码进行认证(如果关闭ACL则不需要)。Thrift在每个语言实现的ThttpClient都有加定制header的函数。

python示例

  1. headers = {}
  2. # 用户名
  3. headers["ACCESSKEYID"]="root";
  4. # 密码
  5. headers["ACCESSSIGNATURE"]="root"
  6. transport = THttpClient.THttpClient('hb-xxxx.aliyuncs.com', 9190)
  7. transport.setCustomHeaders(headers)
  8. protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
  9. client = Client(protocol)
  10. transport.open()

php 示例

  1. //设置用户名和密码,ACCESSKEYID的值为用户名,ACCESSSIGNATURE的值为密码
  2. $headers = array('ACCESSKEYID' => 'root','ACCESSSIGNATURE' => 'root');
  3. //新建HTTP协议的客户端
  4. $socket = new THttpClient('hb-xxxx.aliyuncs.com', 9190);
  5. //将header设置到http client中,访问时携带用户名密码
  6. $socket->addHeaders$headers
  7. $transport = new TBufferedTransport($socket);
  8. $protocol = new TBinaryProtocol($transport);
  9. $client = new HbaseClient($protocol);
  10. $transport->open();

更多语言的使用请参见Thrfit官方文档