经过两天多的资料查找,反复测试从网上找到的多种方案,加上阿里云售后的支持,终于搞定Go语言连接Apache Hive的问题。
测试环境,阿里云E-MapReduce 2.1 中的Hive, Golang 1.7,开发环境win10。
在阿里云hive-site.xml中需要添加:
<property>
<name>hive.server2.authentication</name>
<value>NOSASL</value>
</property>
2017-12-21日修改,增加查询功能
代码如下:
package main
import (
"fmt"
"github.com/dazheng/gohive"
)
func main() {
conn, err := gohive.Connect("cdh3:10000", gohive.DefaultOptions)
if err != nil {
fmt.Errorf("Connect error %v", err)
}
_, err = conn.Exec("create table if not exists t(c1 int)")
// _, err = conn.Exec(" insert into default.t values(1), (2)")
if err != nil {
fmt.Errorf("Connection.Exec error: %v", err)
}
rs, err := conn.Query("select c1 from t limit 10")
if err != nil {
fmt.Errorf("Connection.Query error: %v", err)
}
var c1 int
for rs.Next() {
rs.Scan(&c1)
fmt.Println(c1)
}
conn.Close()
}