golang链接hive
golang链接hivehive提供以下几种交互方式: 1、cli:是Command Line Interface 的缩写,是Hive的命令行界面,用的比较多,是默认服务,直接可以在命令行里使用 2、hiveserver/hiveserver2:这个可以让Hive以提供Thrift服务的服务器形式来运行,可以允许许多个不同语言编写的客户端进行通信,使用需要启动HiveServer服务以和客户端联系,我们可以通过设置HIVE_PORT环境变量来设置服务器所监听的端口,在默认情况下,端口号为10000,这个可以通过以下方式来启动Hiverserver2: hive --service hiveserver2 -p 10002
3、hwi:其实就是hive web interface的缩写它是hive的web借口,是hive cli的一个web替代方案。 我们这里使用hiveserver2来链接hive。 gohive的库,是实现hive的thrift定义的基础接口。我们用thrift生成的库,封装了常用的操作接口。 主要接口包括:
异步模式: 可以将handle序列化存到数据库。如果程序断了,或者任务不在内存中,可以从数据库取出反序列化,继续查询状态等操作。 具体代码参看: 为了兼容hive,当前链接的hiveserver2使用的thrift版本是0.9.3,我们需要将$GOPATH/src/git.apache.org/thrift.git/lib/go/thrift 项目下的版本切换到0,9.3。 $ cd $GOPATH/src/git.apache.org/thrift.git/lib/go/thrift
$ checkout -b 0.9.3 origin/0.9.3
如果git.apache.org访问不方便可以用github.com/apache/thrift 替代。 遇到的坑: 1. thrift生成的go代码,解析FetchResults返回的RowSet会有问题。返回的格式是不是行优先,而是列优先,需要手工转换。 2. hiveserver2启动必须使用NOSASL模式。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |