gpt4 book ai didi

python - 我似乎无法让 Spark 上的 --py-files 工作

转载 作者:IT老高 更新时间:2023-10-28 20:36:11 24 4
gpt4 key购买 nike

我在 Spark 上使用 Python 时遇到问题。我的应用程序有一些依赖项,例如 numpy、pandas、astropy 等。我无法使用 virtualenv 创建具有所有依赖项的环境,因为集群上的节点除了 HDFS 之外没有任何公共(public)挂载点或文件系统。因此,我坚持使用 spark-submit --py-files。我将站点包的内容打包在一个 ZIP 文件中,然后使用 --py-files=dependencies.zip 选项提交作业(如 Easiest way to install Python dependencies on Spark executor nodes? 中的建议)。但是,集群上的节点似乎仍然看不到里面的模块,并且在导入 numpy 时会抛出 ImportError 之类的。

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

当我切换到 virtualenv 并使用本地 pyspark shell 时,一切正常,所以依赖关系都在那里。有谁知道,什么可能导致这个问题以及如何解决它?

谢谢!

最佳答案

首先,我假设您的依赖项列在 requirements.txt 中。要打包和压缩依赖项,请在命令行中运行以下命令:

pip install -t dependencies -r requirements.txt
cd dependencies
zip -r ../dependencies.zip .

在上面,cd dependencies 命令对于确保模块位于 zip 文件的顶层至关重要。感谢 Dan Corin's post提醒一下。

接下来,通过以下方式提交作业:

spark-submit --py-files dependencies.zip spark_job.py

--py-files 指令将 zip 文件发送给 Spark 工作人员,但没有将其添加到 PYTHONPATH (对我来说是混淆的来源)。要将依赖项添加到 PYTHONPATH 以修复 ImportError,请将以下行添加到 Spark 作业 spark_job.py:

sc.addPyFile("dependencies.zip")

来自 this Cloudera post 的警告:

An assumption that anyone doing distributed computing with commodity hardware must assume is that the underlying hardware is potentially heterogeneous. A Python egg built on a client machine will be specific to the client’s CPU architecture because of the required C compilation. Distributing an egg for a complex, compiled package like NumPy, SciPy, or pandas is a brittle solution that is likely to fail on most clusters, at least eventually.

虽然上面的解决方案没有建立一个鸡蛋,但同样的指导方针也适用。

关于python - 我似乎无法让 Spark 上的 --py-files 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36461054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com