千家信息网

Python使用impala包连接hive报错怎么解决

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本篇内容介绍了"Python使用impala包连接hive报错怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读
千家信息网最后更新 2024年11月22日Python使用impala包连接hive报错怎么解决

本篇内容介绍了"Python使用impala包连接hive报错怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

由于是内网测试环境,没有外网,自然就先在本地用conda创建python虚拟环境,安装好所有需要的包再移过去。

一顿操作猛如虎,各种坑都填好了,然后发现impala.util中的as_pandas起不动,原因是其依赖的pandas起不动,归根结底是pandas依赖的numpy import报错:

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))

奇怪的是导入version是正常的,显示目前的numpy版本是1.19.4

from numpy.version import version as __version__
print(__version__)

报错信息中的建议是先完整卸载numpy,然后重装。网上看遍了解决办法,也都是如此。

秉承着匠人程序员精神,一定要追根溯源,另辟蹊径解决问题!

对不起,调子起高了,其实是内网环境太不方便了。

既然报错信息说了有older version的numpy,想办法把它清理干净不就行了吗?

先来看看到底之前装了什么老版本的numpy

这就奇怪了,.../lib/site-packages目录下1.14.3版的手动删除过了,怎么还有呢?看样子还有残存,翻一下...\Anaconda3\conda-meta

果然发现1.14.3的信息,delete这几项再运行一下conda list numpy,显示只有最新版的version了,666~

再次import numpy,依然是最初的报错。。。难道还有older version余孽?

解决问题还是要回归本源,咱们看一下import的原理:

对于python来说,所有被加载到内存的模块都是放在sys.modules里面,所以执行import时会首先去该列表中查询是否已添加。如果已经在sys.modules中,那就简单了,只需要将该module的name添加到我们正在调用该module的本地空间中。如果还没有放在sys.modules中,就需要在sys.path所有路径的目录中去按顺序查找该模块的文件,这些文件一般后缀为".py"、".pyo"、".pyc"、".pyd"、".dll",找到这些模块后就可以将这些模块添加到sys.modules中,再将module name导入到本地。

所以很有可能是在导入numpy时新老版本在sys.modules中撞车了?

先查看一下modules里都有什么:

import sys
sys.modules

元凶终于找到了


赶紧跑去..\Anaconda3\Lib\site-packages\numpy\core__pycache 目录下把这些pyd文件删除!!!

"Python使用impala包连接hive报错怎么解决"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

模块 信息 文件 版本 环境 目录 问题 内容 办法 更多 知识 干净 时新 归根结底 另辟蹊径 学有所成 接下来 追根溯源 余孽 元凶 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 智能监控视频怎么储存到服务器 数据库怎么往表中输入数据 网络技术运用网站 广东hp服务器虚拟化安装云主机 怎么关闭网络安全系统 县级种植数据库 软件开发外包开发团队 数据库1406错误什么意思 用友8.11数据库版本 上海豆卡网络技术有限公司 有没有开源的云服务器 中国最大网络安全公司是谁 汇米互联网科技 软件开发如何并行加速 服务器端口怎么测试通不通 计算机网络技术具体做什么 软件开发主要管理技术要求 英国云端管理系统服务器 深圳java软件开发流程 ctf 转型网络安全 基岩版国内服务器推荐 安徽服务器机箱厂家虚拟主机 洛阳迅享网络技术有限公司 二年级网络安全主题绘画 旺苍天气预报软件开发 如何在数据库建立表格 哈利波特服务器骑士巴士 奥维互动地图用数据库 服务器管理网口远程设置 河南第三方软件开发如何收费
0