云原生多模数据库 Lindorm宽表引擎支持通过HBase非Java(例如C++、Python和Go等)API进行访问,本文介绍具体的访问操作。
准备工作
已下载Thrift安装包,下载链接请单击Thrift安装包。
已下载HBase Thrift2定义文件,下载链接请单击HBase Thrift2定义文件。
已获取Lindorm宽表引擎的使用HBase 非Java API访问的连接地址,具体操作请参见查看连接地址。
访问Lindorm宽表引擎(以Python语言为例)
Thrift安装包的使用请参见Apache Thrift官方文档,通过Thrift访问云原生多模数据库 Lindorm宽表引擎的步骤如下:
使用HBase Thrift2定义文件来生成对应语言的接口文件。 命令语句如下:
thrift --gen <language> Hbase.thrift
说明language
为目标语言,例如:python、php、cpp、py等。语句示例:
thrift --gen python Hbase.thrift
构造客户端访问云原生多模数据库 Lindorm宽表引擎。
Lindorm中Thrift服务器端的transport层使用的是HTTP,因此在构造客户端时,需要thrift中的ThttpClient(各个语言都有相应实现)。并且在ACL开启的情况下,需要在ThttpClient上加上两个header来向服务器传输用户名和密码进行认证(如果关闭ACL则不需要)。Thrift在每个语言实现的ThttpClient都有加定制header的函数。以Python语言为例,使用以下语句构造客户端并访问Lindorm宽表引擎。
# -*- 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 # 配置Lindorm宽表引擎的连接地址 url = "http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com:9190" transport = THttpClient.THttpClient(url) headers = {} # 设置用户名 headers["ACCESSKEYID"]="testuser"; # 设置用户名对应的密码 headers["ACCESSSIGNATURE"]="password" transport.setCustomHeaders(headers) protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport) client = THBaseService.Client(protocol) transport.open() # 具体操作后,执行关闭连接操作 transport.close()