通过HBase非Java SDK访问Lindorm宽表引擎

云原生多模数据库 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定义文件的功能更全而且更容易使用。

准备工作

访问Lindorm宽表引擎(以Python语言为例)

Thrift安装包的使用请参见Apache Thrift官方文档,通过Thrift访问云原生多模数据库Lindorm宽表引擎的步骤如下:

  1. 使用HBase Thrift2定义文件来生成对应语言的接口文件。 命令语句如下:

    thrift --gen <language> hbase.thrift
    说明

    language为目标语言,例如:python、php、cpp等。language与目标语言的对应关系,请参见Apache Thrift官方文档

    以python为例,languagepy,生成语句如下:

    thrift --gen py hbase.thrift
  2. 构造客户端访问云原生多模数据库 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()

相关代码示例

其他非Java语言的完整代码示例请直接下载Github相应语言的代码示例,下载链接如下所示。