GoHive:支持SASL的go语言Hive客户端

原创 2017年12月29日 17:02:46

简介

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()
}
版权声明:转载请署名 欢迎联系博主 https://blog.csdn.net/lwldcr/article/details/78933348

Go连接Hive

经过两天多的资料查找,反复测试从网上找到的多种方案,加上阿里云售后的支持,终于搞定Go语言连接Apache Hive的问题。 测试环境,阿里云E-MapReduce 2.1 中的Hive, Gola...
  • dazheng
  • dazheng
  • 2016-11-05 10:37:46
  • 1916

golang使用odbc链接hive

golang使用odbc链接hive安装odbcyum install unixODBC yum install unixODBC-devel ## mysql driver require yum ...
  • xuduorui
  • xuduorui
  • 2017-11-17 15:08:34
  • 373

golang通过thrift链接hiveserver2

golang链接hivehive提供以下几种交互方式:1、cli:是Command Line Interface 的缩写,是Hive的命令行界面,用的比较多,是默认服务,直接可以在命令行里使用2、hi...
  • xuduorui
  • xuduorui
  • 2017-11-07 19:28:31
  • 361

Golang Thrift Hive

package main import (     hive "github.com/araddon/hive"     "log"     "fmt" ) func init() {    ...
  • guichenglin
  • guichenglin
  • 2016-10-13 16:57:47
  • 1454

一个稍微复杂点的hive sql

with abc as ( select  substring(a.pay_time,1,10) dt, ((if(mibi_consume>0,(mibi_consume*1.00/100), 0)...
  • u013834131
  • u013834131
  • 2016-04-29 16:20:09
  • 1315

GoHive:支持SASL的go语言Hive客户端

https://github.com/lwldcr/gohive花了一周时间才调通,看log配合Hive的源码一步步debug相当费事,基本是按照pyhs2来实现的,支持SASL协议Plain模式,其...
  • lwldcr
  • lwldcr
  • 2017-12-29 17:02:46
  • 1262

TutorialsPoint Excel Hadoop HighCharts <em>Go</em>lang <em>Hive</em> HBase ...

TutorialsPoint Excel Hadoop HighCharts <em>Go</em>lang <em>Hive</em> HBase Foundation Git Fortran Euphoria 教程 综合评分:0 收藏评论举报 所需: 3积分/C币 下载个数: 3 开通...
  • 2018年04月13日 00:00

python通过thrift方式连接hive

python通过thrift方式连接hive 学习,存储,共享。。。。 hive安装完成后,如果只是本地使用,启用 nohup hive --service metastore & [hadoop...
  • wulantian
  • wulantian
  • 2017-07-04 14:57:34
  • 834

基于0.14.0版本配置HiveServer2

配置hiveserver2,基于kerberos认证,使用0.14.0版本,记录中间遇到的问题和访问方式...
  • yu616568
  • yu616568
  • 2015-05-01 18:47:33
  • 3056

hive新功能 Cube, Rollup介绍

说明:hive之cube、rollup,还有窗口函数,在传统关系型数据(oracle、sqlserver)中都是有的,用法都很相似。 GROUPING SETS GROUPING SETS作为GR...
  • u012914981
  • u012914981
  • 2013-12-08 14:15:02
  • 14071
收藏助手
不良信息举报
您举报文章:GoHive:支持SASL的go语言Hive客户端
举报原因:
原因补充:

(最多只允许输入30个字)