参考网址
blog.csdn.net/lwldcr/arti…
前言
golang语言操作hive表,用的是"github.com/lwldcr/gohive"库包
demo
package main
import (
"fmt"
"tcliservice"
"os"
"github.com/lwldcr/gohive"
)
func main() {
t, err := gohive.NewTSaslTransport(HIVE_HOST, PORT, HIVE_USER, HIVE_PASSWD)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
if err := t.Open(); err != nil {
fmt.Println(err)
os.Exit(1)
}
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)
}
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)
}
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)
closeOperationReq := tcliservice.NewTCloseOperationReq()
closeOperationReq.OperationHandle = operationHandler
t.Client.CloseOperation(closeOperationReq)
t.Close()
}