GoHive:支持SASL的go语言Hive客户端
2017-12-29 17:02
676 查看
简介
https://github.com/lwldcr/gohive花了一周时间才调通,看log配合Hive的源码一步步debug相当费事,基本是按照pyhs2来实现的,支持SASL协议Plain模式,其他模式看后续是否需要酌情增加。客户端、查询操作返回数据还可以进一步封装,提供更便捷的使用,后面再更新吧。
欢迎试用、反馈。
GoHive
A hive client with SASL support based on thrift.Usage
package main import ( "fmt" "tcliservice" "github.com/lwldcr/gohive" "os" ) func main() { // first build a new transport // of course we can wrap all these routine operations into functions for repeatedly using t, err := gohive.NewTSaslTransport(HIVE_HOST, PORT, HIVE_USER, HIVE_PASSWD) if err != nil { fmt.Println(err) os.Exit(1) } // now open it if err := t.Open(); err != nil { fmt.Println(err) os.Exit(1) } // then you get a session, and you can execute query now sessionHandler := t.Session execReq := tcliservice.NewTExecuteStatementReq() execReq.SessionHandle = sessionHandler execReq.Statement = "show databases" execResp, err := t.Client.ExecuteStatement(execReq) if err != nil { fmt.Println(err) os.Exit(1) } // fetch result after executing operationHandler := execResp.GetOperationHandle() fetchReq := tcliservice.NewTFetchResultsReq() fetchReq.OperationHandle = operationHandler fetchReq.Orientation = tcliservice.TFetchOrientation_FETCH_FIRST fetchReq.MaxRows = 10 fetchResp, err := t.Client.FetchResults(fetchReq) if err != nil { fmt.Println(err) os.Exit(1) } // there you get your data data := make([]string, 0) res := fetchResp.GetResults().GetRows() for _, r := range res { row := r.GetColVals() for _, field := range row { data = append(data, field.GetStringVal().GetValue()) } } fmt.Println("data:", data) // do cleaning closeOperationReq := tcliservice.NewTCloseOperationReq() closeOperationReq.OperationHandle = operationHandler t.Client.CloseOperation(closeOperationReq) t.Close() }
相关文章推荐
- NATS_08:NATS客户端Go语言手动编写
- 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox),也可以借助Node.js或者Rhino在服务端运行。
- Go语言基于Socket编写服务器端与客户端通信的实例
- [易语言] 【开源】稳定自动更新管理端+客户端,支持多项目!
- golang开发的一个mysql连接代理池,支持多种语言客户端(PHP范例)
- PHPStrom 支持GO语言
- Go语言服务器开发之简易TCP客户端与服务端实现方法
- Go语言基于Socket编写服务器端与客户端通信的实例
- PHPStrom 支持GO语言
- Go HSAIL and Other Language Standards Supported by GCC ( GCC 支持的Go HSAIL和其他语言标准 )
- Go语言网络编程示例-客户端篇
- go 语言 TCP服务器接受客户端字符串信息
- go语言实现一个简单的http客户端抓取远程url的方法
- 修改Go语言(golang)编译器源代码让它支持UTF-8 BOM
- c语言客户端与go语言服务端通信(网络字节序)
- android客户端的语言国际化支持
- go语言笔记——指针,和C用法以及本质一样,但不支持指针的+-运算!
- go语言实现 tcp客户端/服务端
- Go 语言将在1.4版本中支持面向Android平台开发
- go语言实现简易ftp客户端