golang使用odbc链接hive
来源:互联网 发布:芯片编程器 编辑:程序博客网 时间:2024/05/24 04:30
golang使用odbc链接hive
安装odbc
yum install unixODBCyum install unixODBC-devel## mysql driver requireyum install mysql-connector-odbc## hive driver require## https://cwiki.apache.org/confluence/display/Hive/HiveODBC## 官方说不提供hive odbc driver libodbchive.so
此处说明: https://cwiki.apache.org/confluence/display/Hive/HiveODBC
There is no ODBC driver available for HiveServer2 as part of Apache Hive. There are third party ODBC drivers available from different vendors, and most of them seem to be free.
找到了一个Cloudera公司的hiveodbc驱动,地址:
https://www.cloudera.com/downloads/connectors/hive/odbc/2-5-12.html
下载ClouderaHiveODBC-2.5.20.1006-1.el7.x86_64.rpm并安装
$ rpm -ivh ClouderaHiveODBC-2.5.20.1006-1.el7.x86_64.rpmerror: Failed dependencies: cyrus-sasl-gssapi(x86-64) >= 2.1.26 is needed by ClouderaHiveODBC-2.5.20.1006-1.x86_64 cyrus-sasl-plain(x86-64) >= 2.1.26 is needed by ClouderaHiveODBC-2.5.20.1006-1.x86_64$ yum install cyrus-sasl-gssapi$ yum install cyrus-sasl-plain# 重新安装$ rpm -ivh ClouderaHiveODBC-2.5.20.1006-1.el7.x86_64.rpm
配置
配置参考这里:
https://www.ibm.com/support/knowledgecenter/SSCVKV_9.1.2/Campaign/DatabaseTableAdmin/Configuring_the_Cloudera_ODBC_driver.html
配置odbcinst.ini - 已经自动生成,不用配置
配置odbc.ini
vim /etc/odbc.ini
[Cloudera_HIVE]Driver=/opt/cloudera/hiveodbc/lib/64/libclouderahiveodbc64.soDescription=Hive Cloudera ODBC DriverHost=<hostname or ip of Hive server on Hadoop Distribution machine> Port=<port number of Hive server on Hadoop Distribution machine> Schema=<database-name>ServiceDiscoveryMode=0ZKNamespace=HiveServerType=2#AuthMech=3# 0=NOSASL 测试通过AuthMech=0ThriftTransport=1UseNativeQuery=0UID=cloudera
在/etc/odbcinst.ini中增加调试:
[ODBC]Trace=YesTraceFile=/tmp/odbc.trace.log
测试链接
格式 isql {dsnname}
dnsname就是/etc/odbc.ini中的块名称
$ isql Cloudera_HIVE+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+SQL>
go链接
使用gohive “github.com/weigj/go-odbc” 可以顺利连接hive.
// Openconn, err = gohive.Connect("DSN="+"ClouderaHive")// 直接执行的提交_, err := conn.ExecDirect("use "+hiveDbname)// 查询stmt, err := conn.Prepare(queryStr)stmt.Execute()// 获取列colNum, err := op.NumFields()var heads []stringfor i:=0; i<colNum; i++ { // 注意取列要从下标1开始 cols, err := op.FieldMetadata(i+1) heads = append(heads, cols.Name)}log.Printf("heads=%v", heads)// 获取结果rets, err := stmt.FetchAll()log.Printf("rets=%v", rets)// Closestmt.Close()conn.Close()
问题及解决方案
测试发现isql可以连接本机,不能连接网络中的mysql服务器。mysql命令可以连接上网络中的mysql服务器。
遇到问题:
/etc/odbc.ini中,UserName字段无效,使用User字段代替。
遇到问题:
AuthMech要设置成0,0=NOSASL
使用gohive “github.com/weigj/go-odbc” 可以顺利连接hive.
遇到问题:
gohive.stmt.Prepare,Fetch,FetchAll等接口都返回不为nil的空err,需要手动处理。
- golang使用odbc链接hive
- 使用代码刷新ODBC链接SQLSEVER表
- 使用wxWidgets的ODBC链接ACCESS数据源
- C#使用ODBC链接MySQL数据库
- php使用odbc链接mssql2008以上
- C/C++使用ODBC链接数据库
- ODBC链接
- golang ODBC 访问access数据库
- 一、使用 Microsoft OLE DB Provider For ODBC 链接MySQL
- 使用代码刷新ODBC链接SQL SEVER表
- QT 4.7.0 使用odbc链接sqlserver 测试成功
- C++使用ODBC链接MYSQL出现乱码问题
- Golang Thrift Hive
- zeppelin使用jdbc编辑器链接hive
- java ODBC链接 JDBC链接
- rebol ODBC链接数据库
- ODBC方式链接数据库
- cognos通过odbc连接hive
- 如何通过程序(java)提高CSDN的博客访问量
- 数组 冒泡排序 选择排序 插入排序
- c# 委托(一)
- Linux多线程编程讲解之系列一
- SSH链接缓慢原因(待验证)
- golang使用odbc链接hive
- 我的背包 ,啊啊
- DOM 与 HTML DOM(笔记)
- 内网映射之ngrok工具
- 10基于opencv的霍夫变换(霍夫线变换_霍夫圆变换)
- 鉴于mongodb下载各种版本的全部由
- 杂谈
- Raft一致性算法
- ftpClient.makeDirectory(path) 一直返回false,无法创建目录的问题