运行环境
golang 1.13.5
hbase 2.2.5
thrift 0.12.0
golang和hbase的安装不再赘述。
服务器端:
打开hbase的thrift2服务,默认端口9090。
/hbase目录/bin/hbase-daemon.sh start thrift2
客户端:
安装golang-thrift库。本地下载指定版本的库文件代码,https://github.com/apache/thrift/tree/0.12.0
放到本机配置的go path里。
使用阿里云已经生成好的go-thrift-hbase库代码,把hbase目录放入工程中。
https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/go
测试代码如下。测试指定表是否记录,其他的请自己撸。
import (
ctx "context"
"github.com/apache/thrift/lib/go/thrift"
"hbase"
)
func main(){
table := "test_table" //检查某个表里是否有某个记录
rowkey := "12345"
protocolFactory := thrift.NewTBinaryProtocolFactoryDefault()
transport, err := thrift.NewTSocket(net.JoinHostPort("192.168.0.88", "9090"))
if err != nil {
panic(err)
}
client := hbase.NewTHBaseServiceClientFactory(transport, protocolFactory)
if err := transport.Open(); err != nil {
panic(err)
}
defer transport.Close()
isexists, err := client.Exists(ctx.Background(), []byte(table), &hbase.TGet{Row: []byte(rowkey)})
if err != nil {
panic(err)
}
fmt.Printf("rowkey{%s} in table{%s} Exists:%t\n", rowkey, table, isexists)
}
