运行环境
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) }