本篇內(nèi)容介紹了“Python使用impala包連接hive報(bào)錯(cuò)怎么解決”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司是專業(yè)的神池網(wǎng)站建設(shè)公司,神池接單;提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行神池網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
由于是內(nèi)網(wǎng)測試環(huán)境,沒有外網(wǎng),自然就先在本地用conda創(chuàng)建python虛擬環(huán)境,安裝好所有需要的包再移過去。
一頓操作猛如虎,各種坑都填好了,然后發(fā)現(xiàn)impala.util中的as_pandas起不動(dòng),原因是其依賴的pandas起不動(dòng),歸根結(jié)底是pandas依賴的numpy import報(bào)錯(cuò):
ImportError: Something is wrong with the numpy installation.
While importing we detected an older version of numpy in
['/.../anconda3/lib/site-packages/numpy'].
One method of fixing this is to repeatedly uninstall numpy
until none is found, then reinstall this version.
定位問題是卡在numpy源碼中的__init__.py這一段:
if not (hasattr(multiarray, '_multiarray_umath') and
hasattr(umath, '_multiarray_umath')):
import sys
path = sys.modules['numpy'].__path__
msg = ("Something is wrong with the numpy installation. "
"While importing we detected an older version of "
"numpy in {}. One method of fixing this is to repeatedly uninstall "
"numpy until none is found, then reinstall this version.")
raise ImportError(msg.format(path))
奇怪的是導(dǎo)入version是正常的,顯示目前的numpy版本是1.19.4
from numpy.version import version as __version__
print(__version__)
報(bào)錯(cuò)信息中的建議是先完整卸載numpy,然后重裝。網(wǎng)上看遍了解決辦法,也都是如此。
秉承著匠人程序員精神,一定要追根溯源,另辟蹊徑解決問題!
對不起,調(diào)子起高了,其實(shí)是內(nèi)網(wǎng)環(huán)境太不方便了。
既然報(bào)錯(cuò)信息說了有older version的numpy,想辦法把它清理干凈不就行了嗎?
先來看看到底之前裝了什么老版本的numpy
這就奇怪了,.../lib/site-packages目錄下1.14.3版的手動(dòng)刪除過了,怎么還有呢?看樣子還有殘存,翻一下...\Anaconda3\conda-meta
果然發(fā)現(xiàn)1.14.3的信息,delete這幾項(xiàng)再運(yùn)行一下conda list numpy,顯示只有最新版的version了,666~
再次import numpy,依然是最初的報(bào)錯(cuò)。。。難道還有older version余孽?
解決問題還是要回歸本源,咱們看一下import的原理:
對于python來說,所有被加載到內(nèi)存的模塊都是放在sys.modules里面,所以執(zhí)行import時(shí)會(huì)首先去該列表中查詢是否已添加。如果已經(jīng)在sys.modules中,那就簡單了,只需要將該module的name添加到我們正在調(diào)用該module的本地空間中。如果還沒有放在sys.modules中,就需要在sys.path所有路徑的目錄中去按順序查找該模塊的文件,這些文件一般后綴為".py"、".pyo"、".pyc"、".pyd"、".dll",找到這些模塊后就可以將這些模塊添加到sys.modules中,再將module name導(dǎo)入到本地。
所以很有可能是在導(dǎo)入numpy時(shí)新老版本在sys.modules中撞車了?
先查看一下modules里都有什么:
import sys
sys.modules
元兇終于找到了
趕緊跑去..\Anaconda3\Lib\site-packages\numpy\core__pycache 目錄下把這些pyd文件刪除?。?!
“Python使用impala包連接hive報(bào)錯(cuò)怎么解決”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!