前言
之所以選擇基于Linux系統(tǒng)用Python連接hive田柔,是因?yàn)樵趙indow下會(huì)出現(xiàn)Hadoop認(rèn)證失敗的問題。會(huì)出現(xiàn)執(zhí)行python腳本的機(jī)器無目標(biāo)hive的kerberos認(rèn)證信息類似錯(cuò)誤谬运,也會(huì)出現(xiàn)sasl調(diào)用問題:
thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2
該錯(cuò)誤我嘗試多次,未能解決(有知道window下解決方案的歡迎留言),所以建議使用Linux系統(tǒng)赌蔑。
1 環(huán)境配置
VMware Workstation +Ubuntu
軟件下載
- Ubuntu安裝
國(guó)內(nèi)有很多開源的鏡像網(wǎng)站丸相,本文采用清華的開源(根據(jù)本機(jī)電腦具體情況選擇32位或者64位的)
官網(wǎng):https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.04/
- VMware Workstation下載
網(wǎng)上有很資源,選擇自己合適(喜歡)的就好,本文選擇的是下圖中紅色框框的版本禽翼。
網(wǎng)址:http://so.cr173.com/search/d/vmware_all_rank.html
image.png
軟件安裝
網(wǎng)上教程很多,本文推薦一個(gè)教程:https://blog.csdn.net/stpeace/article/details/78598333
2 依賴包
主要是以下四個(gè)包:
pip install sasl
pip install thrift
pip install thrift-sasl
pip install PyHive
在安裝包sasl的過程會(huì)出現(xiàn)麻煩座硕,主要是Ubuntu中缺乏sasl.h的問題,這里可以通過下面語句解決
sudo apt-get install libsasl2-dev
這和centos有一些區(qū)別涕蜂。
- 【注解】Windows下安裝sasl包可參考我的另外一篇筆記:http://www.reibang.com/p/c67657db5a93
接下來一般就可以順利安裝以上四個(gè)包华匾,記住thrift-sasl的名字可能為thrift_sasl,注意連接符的區(qū)別机隙。
3 測(cè)試代碼
本文是基于本機(jī)虛擬機(jī)用Python連接的公司測(cè)試環(huán)境的hive(生產(chǎn)環(huán)境和測(cè)試環(huán)境是有隔離的蜘拉,生產(chǎn)環(huán)境需要堡壘機(jī)才能連接)
import sys
from pyhive import hive
conn = hive.connect(host="server_ip",port=10000, auth="...", database="...",username="...",password="...")
cursor = conn.cursor()
cursor.execute("show tables")
res = cursor.fetchall()
conn.close()
for item in res:
print(item)
- host為IP,post為端口有鹿,auth有多種模式旭旭,我用的是“LDAP”,也可以嘗試“NOSASL”等葱跋。
4 最后
因缺乏工程和計(jì)算機(jī)基礎(chǔ)的知識(shí)您机,對(duì)很多的地方都了解的不夠深入,歡迎大神指點(diǎn)年局,最后向以下兩位大佬的帖子致謝:
[1]https://www.zhihu.com/question/269333988/answer/581126392
[2]https://mp.weixin.qq.com/s/cdFxkphMtJASQ7-nKt13mg