在hadoop流媒体上使用numpy:importerror:无法导入名称multiarray

rpppsulh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(246)

对于我的一个项目,我基本上使用nltk进行词性标记,它在内部使用一个'english.pickle'文件。我成功地用这些pickle文件打包了nltk库,以便mapper和reducer使用-file选项为hadoop流作业提供这些文件。
但是,当nltk库试图加载该pickle文件时,它会为numpy提供错误信息—因为我正在运行此作业的集群没有安装numpy。另外,我没有根访问权限,因此无法在集群上安装numpy或任何其他包。因此,唯一的方法是打包python模块,使其可用于mapper和reducer。我成功地做到了。但现在的问题是,当导入numpy时,默认情况下它会导入multiarray(如init.py中所示),这就是我得到错误的地方:

File "/usr/lib64/python2.6/pickle.py", line 1370, in load
        return Unpickler(file).load()
      File "/usr/lib64/python2.6/pickle.py", line 858, in load
        dispatch[key](self)
      File "/usr/lib64/python2.6/pickle.py", line 1090, in load_global
        klass = self.find_class(module, name)
      File "/usr/lib64/python2.6/pickle.py", line 1124, in find_class
        __import__(module)
      File "numpy.mod/numpy/__init__.py", line 170, in <module>
      File "numpy.mod/numpy/add_newdocs.py", line 13, in <module>
      File "numpy.mod/numpy/lib/__init__.py", line 8, in <module>
      File "numpy.mod/numpy/lib/type_check.py", line 11, in <module>
      File "numpy.mod/numpy/core/__init__.py", line 6, in <module>
    ImportError: cannot import name multiarray

我尝试将本地计算机上包含multiarray.pyd的numpy目录移动到集群中,以使其可供mapper和reducer使用,但没有起到任何作用。
关于如何解决这个问题(保留不能在集群机器上安装任何东西的限制)有什么意见吗?谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题