通过golang 查询impala

cloudera官方没有提供impala基于golang的驱动,github有github.com/bippio/go-impala
 
package main

import (
   "context"
   "github.com/bippio/go-impala"
   "log"
   "time"
)

func main() {
   host := "prd-activity-3"
   port := 21000
   opts := impalathing.DefaultOptions

   // enable LDAP authentication:
   opts.UseLDAP = false
   opts.Username = "<username>"
   opts.Password = "<password>"

   // enable TLS
   opts.UseTLS = false
   opts.CACertPath = "<ca-cert-path>"

   con, err := impalathing.Connect(host, port, &opts)
   if err != nil {
      log.Fatal(err)
   }

   query, err := con.Query(context.Background(), "SELECT * from impalademo.test1")

   startTime := time.Now()
   results := query.FetchAll(context.Background())
   log.Printf("Fetch %d rows(s) in %.2fs", len(results), time.Duration(time.Since(startTime)).Seconds())
}
端口说明:
    21000 :Impala Daemon Beeswax端口,被 impala-shell, Beeswax, Cloudera ODBC 1.2 驱动 用于传递命令和接收结果
    21050:Impala Daemon HiveServer2端口,被使用 JDBC 或 Cloudera ODBC 2.0 及以上驱动的诸如 BI 工具之类的应用用来传递命令和接收结
    所有通过java jdbc驱动调用的时候就使用21050端口,但是golang是通过thrift协议来调用impala的,就是使用21000端口
 
 

转载于:https://www.cnblogs.com/qizhelongdeyang/p/10338909.html

在Go语言(又称Golang)中,查询数据并将其装入map是一种常见的操作。Map在Go中是一个内置的数据结构,它可以存储键值对,其中的键必须是可比较的类型,而值可以是任何类型。 以下是一个简单的例子,展示了如何在Go中从数据库查询数据并将其装入map中: ```go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" // 导入MySQL驱动 ) func main() { // 假设我们有一个数据库连接字符串 dbDSN := "user:password@tcp(localhost:5555)/dbname" // 连接到数据库 db, err := sql.Open("mysql", dbDSN) if err != nil { panic(err) } defer db.Close() // 执行查询 rows, err := db.Query("SELECT id, name FROM users") if err != nil { panic(err) } defer rows.Close() // 创建一个map来存储查询结果,键为id,值为name userMap := make(map[int]string) // 遍历查询结果 for rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { panic(err) } // 将查询到的数据存入map userMap[id] = name } // 错误处理 if err := rows.Err(); err != nil { panic(err) } // 打印map中的数据 for id, name := range userMap { fmt.Printf("ID: %d, Name: %s\n", id, name) } } ``` 在这个例子中,我们首先导入了必要的包,然后定义了数据库连接字符串`dbDSN`。使用`sql.Open`函数打开数据库连接,并通过`db.Query`执行SQL查询查询结果被遍历,并使用`rows.Scan`方法将每一行的数据填充到变量中。然后,我们把这些变量存入一个map中。在实际应用中,你需要根据你的数据库驱动和实际情况调整导入的包和数据库操作的细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值