我在Spark上使用Python时遇到了问题.我的应用程序有一些依赖项,例如numpy,pandas,astropy等.我不能使用virtualenv来创建一个包含所有依赖项的环境,因为除了HDFS之外,集群上的节点没有任何公共mountpoint或文件系统.因此我坚持使用spark-submit --py-files.我将site-packages的内容打包到一个ZIP文件中并像使用--py-files=dependencies.zip选项一样提交作业(最简单的方法是在Spark执行器节点上安装Python依赖项?).但是,群集上的节点似乎仍然没有看到内部的模块,并且ImportError在导入numpy时它们会抛出这样的内容.
File "/path/anonymized/module.py", line 6, in <module>
import numpy
File "/tmp/pip-build-4fjFLQ/numpy/numpy/__init__.py", line 180, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/add_newdocs.py", line 13, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/lib/__init__.py", line 8, in <module>
#
File "/tmp/pip-build-4fjFLQ/numpy/numpy/lib/type_check.py", line 11, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/core/__init__.py", line 14, in <module>
ImportError: cannot import name multiarray
Run Code Online (Sandbox Code Playgroud)
当我切换到virtualenv并使用本地pyspark shell时,一切正常,所以依赖都在那里.有谁知道,什么可能导致这个问题,以及如何解决它?
谢谢!
我有一个包含一些模型文件的目录,由于某些原因,我的应用程序必须访问本地文件系统中的这些模型文件.
当然我知道可以将文件上传到每个执行程序的工作目录的--files选项,spark-submit它确实有效.
但是,我想保留我的文件的目录结构,所以我想出了--archives选项,这就是说
YARN-only:
......
--archives ARCHIVES Comma separated list of archives to be extracted into the working directory of each executor.
......
Run Code Online (Sandbox Code Playgroud)
但是当我实际使用它上传时models.zip,我发现纱线只是放在那里没有提取,就像它做的那样--files.我误解to be extracted或误用了这个选项吗?
问题:我正在尝试从本地计算机向计算机集群运行火花提交脚本。集群完成的工作使用numpy。我目前收到以下错误:
ImportError:
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: cannot import name multiarray
Run Code Online (Sandbox Code Playgroud)
详细信息:在我的本地环境中,我设置了一个virtualenv,其中包括numpy以及我在项目和其他各种库中使用的私有存储库。我从venv / lib / site-packages的site-packages目录创建了一个zip文件(lib / libs.zip),其中“ venv”是我的虚拟环境。我将此zip邮寄到远程节点。我用于执行spark-submit的shell脚本如下所示:
$SPARK_HOME/bin/spark-submit \
--deploy-mode cluster \
--master yarn \
--conf spark.pyspark.virtualenv.enabled=true \
--conf spark.pyspark.virtualenv.type=native \
--conf spark.pyspark.virtualenv.requirements=${parent}/requirements.txt \
--conf spark.pyspark.virtualenv.bin.path=${parent}/venv \
--py-files "${parent}/lib/libs.zip" …Run Code Online (Sandbox Code Playgroud)