基于HBase非Java API的应用开发

云原生多模数据库 Lindorm宽表引擎支持通过HBase非Java(例如C++、Python和Go等)API进行访问,本文介绍具体的访问操作。

准备工作

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

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

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

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

    language为目标语言,例如:python、php、cpp、py等。

    语句示例:

    thrift --gen python 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相应语言的代码示例,下载链接如下所示。