通过pyhive连接hive需要的Python包
1.通過pyhive連接hive需要的Python包:
3.1 pyhive
3.2 thrift
3.3 sasl
共需要三個(gè)包
2.連接Hive
from pyhive import hive
import pandas as pd
cnn=hive.Connection(host=‘localhost’, port=‘10000’, username=‘hive’)
cursor=cnn.cursor()
cursor.execute(“show databases”)
data=pd.DataFrame(cursor.fetchall())
其中sasl在Windows安裝下安裝需要編譯環(huán)境,為了方便可直接從https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl下載編譯好的包,直接進(jìn)行安裝,比如
C:>pip install sasl-0.2.1-cp37-cp37m-win_amd64.whl
安裝完畢,執(zhí)行代碼會(huì)報(bào)以下錯(cuò)誤
from pyhive import hive
conn = hive.Connection(host=‘172.100.0.11’,port=10000)
Traceback (most recent call last):
File “”, line 1, in
File “…\Python37\lib\site-packages\pyhive\hive.py”, line 192, in init
self.transport.open()
File "…\Python37\lib\site-packages\thrift_sasl_init.py", line 79, in open
message=(“Could not start SASL: %s” % self.sasl.getError()))
thrift.transport.TTransport.TTransportException: Could not start SASL: b’Error in sasl_client_start (-12) SASL library is not initialized
【解決方案】
先直接貼出解決方案,后面再給出分析過程。在Windows中使用管理員權(quán)限打開控制臺(tái),在控制執(zhí)行一段命令即可,操作如下。
C:\Windows\system32> FOR /F “usebackq delims=” %A IN (python -c "from importlib import util;import os;print(os.path.join(os.path.dirname(util.find_spec('sasl').origin),'sasl2'))") DO (
REG ADD “HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library” /v SearchPath /t REG_SZ /d “%A”
)
datax 報(bào)錯(cuò) File “datax.py”, line 114 print readerRef
解決方案:更換安裝目錄下bin的對應(yīng)文件
datax.py, dxprof.y, perftrace.py
/home/datax/plugin/reader/._hdfsreader/plugin.json]不存在. 請檢查您的配置文
解決:
但是并未在提示目錄找到指定文件
需要通過命令行查看是否有._開頭的文件
在datax/plugin目錄下執(zhí)行
find ./* -type f -name “._*er”
將查到的文件全部刪除,可通過此命令執(zhí)行
nd ./* -type f -name “._*er”|xargs rm -rf
再次運(yùn)行命令即可正常執(zhí)行 :)
總結(jié)
以上是生活随笔為你收集整理的通过pyhive连接hive需要的Python包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杨辉三角形Java实现
- 下一篇: iOS 录音功能实现