云原生多模数据库 Lindorm宽表引擎支持通过HBase非Java(例如C++、Python和Go等)API进行访问,本文介绍具体的SDK安装和访问操作。
背景信息
云原生多模数据库 Lindorm宽表引擎通过Thrift支持非Java语言(例如C++、Python和Go等)访问。
云原生多模数据库 Lindorm宽表引擎使用的HBase Thrift2接口定义,所以需要下载HBase Thrift2定义文件来生成对应语言的接口。与HBase Thrift1定义相比,Lindorm中的HBase Thrift2接口定义更加清晰,您可以获得和Java语言类似的API调用体验。目前HBase Thrift2定义文件比HBase Thrift1定义文件的功能更全而且更容易使用。
准备工作
已下载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等。language
与目标语言的对应关系,请参见Apache Thrift官方文档。以python为例,
language
为py
,生成语句如下:thrift --gen py 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()