Git Product home page Git Product logo

gohive's Introduction

GoHive

A hive client with SASL support based on thrift.

Supported Versions

The latest commit is built with:

  • Thrift: 0.12.0
  • Hive: 2.2.0

Other versions' compatibilities are not guaranteed, use at your own risk. Also, you could build your own version hive client follow the steps at the end of this README.

Known problems

I found one strange thing: my Hive is configured to NONE authorization, but every time I got an "unexpected EOF" error when I tried to connect with emply username & password given, but It works whatever username & password given. So i use a DefaultUser & DefaultPass variables when no username & password given in my code to make it works. Please tell me if anybody knows the reason.

Usage

package main

import (
	"fmt"
	"os"

	"github.com/lwldcr/gohive"
)

func main() {
		// first build a new transport
    	// of course we can wrap all these routine operations into functions for repeatedly using
    	// replace HIVE_HOST, PORT, HIVE_USER, HIVE_PASSWD with your own configurations
    	t, err := gohive.NewTSaslTransport(HIVE_HOST, PORT, HIVE_USER, HIVE_PASSWD, gohive.DefaultOptions)
    	if err != nil {
    		fmt.Println(err)
    		os.Exit(1)
    	}
    
    	// now open it
    	if err := t.Open(); err != nil {
    		fmt.Println("open failed:", err)
    		os.Exit(1)
    	}
    	defer t.Close()
    
    	// execute query
    	rows, err := t.Query("SHOW TABLES")
    	if err != nil {
    		fmt.Println(err)
    		os.Exit(1)
    	}
    	defer rows.Close()
    
    	// check status
    	status, err := rows.Wait()
    	if !status.IsSuccess() {
    		fmt.Println("unsuccessful query", status)
    		os.Exit(1)
    	}
    
    	var (
    		tableName string
    	)
    
    	// scan results
    	for rows.Next() {
    		rows.Scan(&tableName)
    		fmt.Println("table:", tableName)
    	}
}

How to Build

I built things on CentOS 6.5, here are the steps:

  1. build thrift
    • follow steps from apache web page, build & install thrift
    • if you doesnot need cpp/lua/py support, disable them with configure command:
      ./configure --with-lua=no --with-php=no
    that will save you much time building dependencies
    • if you build thrift with go support inside GFW, a proxy is needed to fetch golang.org/x/net/context
  2. get Hive source code of your Hive version from github
  3. use thrift definition of your Hive version and generate tcliservice with command:
    thrift --gen go -o src/gen/thrift if/TCLIService.thrift
  4. debug & update until it works(mostly handling response data)

gohive's People

Contributors

lwldcr avatar delong45 avatar

Stargazers

 avatar Mr-Mu avatar  Bug Zheng avatar 赵迪 avatar will avatar 蚂蚁不还花呗 avatar 迷茫少年 avatar

Watchers

James Cloos avatar  avatar xfzheng avatar

Forkers

pmtabe1

gohive's Issues

err

应该怎么插入数据

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.