python连接hive



pyhs2的作用
HiveServer2为客户端在远程执行hive查询提供了接口,通过Thrift RPC来实现,还提供了多用户并发和认证功能。目前使用python的用户可以通过pyhs2这个模块来连接HiveServer2,实现查询和取回结果的操作。


pyhs2的安装
按理说要安装pyhs2其实是很简单的,有pip直接运行“pip install pyhs2”就可以实现安装
~~~~~~~~~~~
但是要是真就这么搞定了,怕是就不会有这篇文章了,那么接下来是 各种问题
(以下问题可能是因为我这电脑上没有装VS的原因导致缺少各种库)(已查明的确是这样子的!!!若在linux上,"yum/apt-get install (一堆库)",忘记截图了所以自己找吧)
1.缺少stdint.h文件

到网上找个stdint.h解压到提示缺少文件的目录的include目录下


2.缺少unistd.h
【不小心把powershell关了,于是乎,没了截图的机会】
放到提示缺少文件的目录的include目录下(同上)

3.依赖库sasl安装出错
整个流程中最坑的部分(之一),要问为什么,报错说缺少一个sasl/sasl.h文件。sasl目录在哪呢?在sasl安装包里,也就是说,安装包里本就没有这个文件,然后告诉你“我为什么没有这个,我要你给我这个”(刁蛮的很)
所以从另一安装包里搞来一份放进去(刁蛮就刁蛮,宠还是必须宠着的)
cyrus-sasl-2.1.22.tar.gz(<---cyrus-sasl-2.1.22.tar.gz)
然后还会有几个类似的错误,解决方法一样。
最后一个错误,报错说有个一个“getpass()”函数找不到。
(纳尼!?函数!?姑奶奶,这是我辛辛苦苦把菜都做好了,你告诉我你想起电饭煲没插电!?不对,是家里没米!?)
那么如何解决? 我也不知道,无米之炊啊,我来现写啊(没准是见识少了,也许藏在什么地方吧)
所以来到这里,我告诉你,前面的都白做了!!!
那怎么办?其实,到这下载一个安装文件,“pip install xxx.whl”就好了(我也没办法,我也是最后才知道的啊,我心态也很不平衡啊,所以我才把这个放在最后)












现在能用上该库连接上hive了吗?不能!!!!这东西已经不提供服务了!!!!(嗨呀,当然是选择原谅她啦!!!)
那么如何解决? 没有办法,虽然不专一是大忌,但是怎么能就在一棵树上吊死了?


Impyla安装
4.安装impyla
对就是它,py->impala->hive。
“pip install impyla”即可。
然而这文章并不会这么结束,下面是新的问题。(我还能说什么?女人心不都一个样么。深似海,谁能猜得透?有什么好奇怪的。)
5.缺少Cyrus SASL

SASL是什么?SASL是一个验证机制,一个通用的方法为基于连接的协议增加验证支持。SASL (Simple Authentication Security Layer)简单认证安全层,功能主要是用于SMTP认证。
给系统安装SASL的一个实现。
“yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi”
(好像还要“pip install thrift_sasl”,试试吧)
目前windows上没找到实现SASL的方法,所以只好把项目转移到到Linux上( 之前都是在window是上

6.回滚thift至0.9.3

没错你没有看错就是降版本。全片最坑的地方之三。impyla只支持<=0.9.3的。(你很幸运,我已经告诉您了。免去了忍不住砸电脑的冲动。)
“pip install thrift--0.9.3”

终于,到这里真的结束了,至少我结束了。
最后总结一下,md,lz研究了大半天的东西,还tm去翻hue的源代码看它是怎么连hive的,结果没完全看懂不说,看懂的地方就是原生的thrift连接hive的方法,暂不明白前人们是怎么走通的,最后发现得换个库,这大半天等于浪费时间啊!!!(我现在就在想,在用pyhs2时是不是也有thrift也得回滚到0.9.3?)爆炸爆炸。
以上步骤或许有忘记记录的地方,md到时候再说吧,我去修键盘去了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值