我在一个大型集群上运行Spark程序(为此,我没有管理权限).numpy没有安装在工作节点上.因此,我捆绑numpy了我的程序,但是我收到以下错误:
Traceback (most recent call last):
File "/home/user/spark-script.py", line 12, in <module>
import numpy
File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 170, in <module>
File "/usr/local/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
File "/usr/local/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 8, in <module>
File "/usr/local/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 11, in <module>
File "/usr/local/lib/python2.7/dist-packages/numpy/core/__init__.py", line 6, in <module>
ImportError: cannot import name multiarray
Run Code Online (Sandbox Code Playgroud)
该脚本实际上非常简单:
from pyspark import SparkConf, SparkContext
sc = SparkContext()
sc.addPyFile('numpy.zip')
import numpy
a = sc.parallelize(numpy.array([12, 23, 34, 45, 56, 67, 78, 89, 90]))
print a.collect()
Run Code Online (Sandbox Code Playgroud)
我理解错误的发生是因为numpy …
我在 Spark 执行程序上有类似的导入错误,如这里所述,只是使用 psycopg2:ImportError: No module named numpy on spark workers
这里说“虽然熊猫太复杂了,无法作为 *.py 文件分发,但您可以为它及其依赖项创建一个 egg 并将其发送给执行程序”。
所以问题是“如何从包及其依赖项创建egg文件?” 或轮子,以防鸡蛋是遗产。在 pip 中是否有任何命令?