在hadoop流上使用numpy:ImportError:无法导入名称多行

时间:2015-02-09 21:29:43

标签: hadoop numpy streaming nltk

我正在使用的一个项目基本上使用NLTK进行pos标记,内部使用了一个' english.pickle'文件。我设法用这些pickle文件打包nltk库,使用-file选项使它们可用于mapper和reducer for hadoop流作业。

但是,当nltk库试图加载该pickle文件时,它会给numpy带来错误 - 因为我正在运行此作业的集群没有安装numpy。此外,我没有root访问权限,因此无法在群集上安装numpy或任何其他软件包。因此,唯一的方法是打包python模块,使其可用于mapper和reducer。我成功地做到了。但现在问题是当导入numpy时,它默认导入多阵列(如 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,但这并没有帮助。

有关如何解决此问题的任何输入(保留我无法在群集计算机上安装任何内容的约束)? 谢谢!

0 个答案:

没有答案