HBase增强版通过Thrift支持多语言访问,只要是Thrift支持的语言,都可以访问HBase增强版。HBase增强版服务端的Thrift版本是0.12.0,虽然说thrift支持向后兼容,但如果有条件的用户,最好还是下载0.12.0的thrift,点击这里下载。一些语言提供了管理依赖的方法,可以遵循这些语言的使用习惯来安装thrift,如Python语言可以通过pip install thrift
来安装,Go语言可以直接在代码里import {"github.com/apache/thrift/lib/go/thrift"}
即可。
Thrift的使用帮助可以参考Apache Thrift的官方文档,下面给出简单的使用方法。
从上述地址下载接口定义文件后,按照如下语法生成接口定义文件
thrift --gen <language> Hbase.thrift
例如:
thrift --gen php Hbase.thrift
thrift --gen cpp Hbase.thrift
thrift --gen py Hbase.thrift
HBase增强版Thrift服务器端的transport层使用的是HTTP,因此在构造客户端时,需要thrift中的ThttpClient(各个语言都有相应实现)。并且在ACL开启的情况下,需要在ThttpClient上加上两个header来向服务器传输用户名和密码进行认证(如果关闭ACL则不需要)。Thrift在每个语言实现的ThttpClient都有加定制header的函数。如以Python语言的话,用以下方法构造客户端和设置连接串/用户名密码。更多语言示例可以参见demo。
# -*- coding: utf-8 -*-
# 以下两个模块可以通过 pip install thrift 安装获得
from thrift.protocol import TBinaryProtocol
from thrift.transport import THttpClient
# 下面的模块通过 thrift --gen py hbase.thrift 来生成
from hbase import THBaseService
from hbase.ttypes import TColumnValue, TColumn, TTableName, TTableDescriptor, TColumnFamilyDescriptor, TNamespaceDescriptor, TGet, TPut, TScan
# 连接地址
url = "http://host:9190"
transport = THttpClient.THttpClient(url)
headers = {}
# 用户名
headers["ACCESSKEYID"]="root";
# 密码
headers["ACCESSSIGNATURE"]="root"
transport.setCustomHeaders(headers)
protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
client = THBaseService.Client(protocol)
transport.open()
# 具体操作,最后close连接
transport.close()
所有的Demo的完整的代码都上传到了GitHub上,包括该语言thrift定义文件,以及所依赖的libray(某些语言适用)。用户可以直接下载Github上相应语言的代码适用
https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/python
https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/go
https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/cpp
https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/nodejs
https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/php
更多语言的使用请参见Thrfit官方文档
在文档使用中是否遇到以下问题
更多建议
匿名提交