Categorygithub.com/xxbandy/presto-go
modulepackage
0.0.2
Repository: https://github.com/xxbandy/presto-go.git
Documentation: pkg.go.dev

# README

presto-go

注意:presto官方也提供了一个golang的presto客户端包,但是要求presto的版本大于0.16x

一个简单版本的Golang语言的presto的客户端。

Todos

  • HTTP Basic 认证
  • Presto基本查询
  • command line
    • 支持catalog参数
    • 支持--file指定sql文件执行
  • Tasks任务状态[使用独立请求实时查看任务状态]
  • 格式化输出
  • Stages任务流

Requirements

  • go1.8.3+
  • Presto 0.14X or newer

Installation and Usage

$ go get -v github.com/xxbandy/presto-go/presto

$ cat querydata.go
package main
import (
    "fmt"
    "github.com/xxbandy/presto-go/presto"
)

func main() {
  //host,port,user,catalog,schema,query
  sql := "select * from default.userinfo limit 10"
  req, posterr := presto.NewQuery("localhost", 8080, "root", "", "hive", "default", sql)
  if posterr != nil {
    fmt.Println(posterr)
  } else {
    fmt.Println(req.GetQueryId())
    //fmt.Println(req.GetNextUri())

    // rows为获取到的全量数据
    rows, fetcherr := req.Next()
    if fetcherr != nil {
      fmt.Println(fetcherr)
    } else {
      fmt.Println("进度:", req.GetProcess())
      fmt.Println("节点:", req.GetNodes())
      fmt.Println("是否关闭:", req.Getclose())
      fmt.Println("状态:", req.GetState())

      fmt.Println("列名:", req.GetColumns())
      fmt.Println("数据:")
      if rows != nil {
        for _, v := range rows {
          fmt.Println(v)
        }
      }
    }
    //fmt.Println("任务流状态:")
    //req.GetTasks()
  }

}

$ go run querydata.go
query id:20190328_102808_00012_t6972
进度: 1
节点: 1
是否关闭: true
状态: FINISHED
列名: [name age sex]
数据:
[bgops 18 male]

# Packages

No description provided by the author