python 调用 go api_多语言(C++/Python/Go等)API访问

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"}即可。

HBase增强版使用的Thrift接口定义是HBase的thrift2。因此需要下载thrift2的定义文件生成相应语言的接口。相比thrift1定义,HBase中的thrift2接口定义更加清晰,用户可以获得和Java语言类似的API调用体验。之前的thrift2之所以使用不广泛是因为thrift2的接口不全,不支持建表删表等DDL操作。但是目前thrift2相关的API定义已经由阿里云的开发人员补全并回馈给了社区(HBASE-21649)。目前thrift2比thrift1的功能更全而且更容易使用。

准备下载Thrift安装包,点击这里下载。

获取集群的连接地址,多语言访问使用的连接为连接信息中的“非 JAVA 语言 Thrift2 访问地址”访问地址部分(注意专有网络地址和外网地址的区别)。

访问

Thrift的使用帮助可以参考Apache Thrift的官方文档,下面给出简单的使用方法。

1.生成对应语言的接口定义文件

从上述地址下载接口定义文件后,按照如下语法生成接口定义文件

thrift--genHbase.thrift

例如:

thrift--gen phpHbase.thrift

thrift--gen cppHbase.thrift

thrift--gen pyHbase.thrift

2. 构造客户端访问HBase增强版

HBase增强版Thrift服务器端的transport层使用的是HTTP,因此在构造客户端时,需要thrift中的ThttpClient(各个语言都有相应实现)。并且在ACL开启的情况下,需要在ThttpClient上加上两个header来向服务器传输用户名和密码进行认证(如果关闭ACL则不需要)。Thrift在每个语言实现的ThttpClient都有加定制header的函数。如以Python语言的话,用以下方法构造客户端和设置连接串/用户名密码。更多语言示例可以参见demo。

# -*- coding: utf-8 -*-

# 以下两个模块可以通过 pip install thrift 安装获得

fromthrift.protocolimportTBinaryProtocol

fromthrift.transportimportTHttpClient

# 下面的模块通过 thrift --gen py hbase.thrift 来生成

fromhbaseimportTHBaseService

fromhbase.ttypesimportTColumnValue,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

所有的Demo的完整的代码都上传到了GitHub上,包括该语言thrift定义文件,以及所依赖的libray(某些语言适用)。用户可以直接下载Github上相应语言的代码适用

Python

Go

C++

node.js

PHP

更多语言

更多语言的使用请参见Thrfit官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值