在 Google 云 Dataproc 上安装 pyspark 导致 "could not find valid SPARK_HOME while searching['/tmp', '/usr/local/bin']"

Install pyspark on Google cloud Dataproc cause "could not find valid SPARK_HOME while searching['/tmp', '/usr/local/bin']"

我使用 Google Cloud Dataproc 创建了一个集群。我可以很好地向集群提交作业,直到我这样做

pip3 install pyspark

在集群上。之后,每次我尝试提交作业时,都会收到错误消息:

Could not find valid SPARK_HOME while searching ['/tmp', '/usr/local/bin']
/usr/local/bin/spark-submit: line 27: /bin/spark-class: No such file or directory

我注意到即使在安装 pyspark 之前,SPARK_HOME 也没有设置任何内容。但是我可以很好地提交工作。我想知道为什么安装 pyspark 会导致此问题以及如何解决?

Pyspark 已预安装在 Dataproc 上——您应该调用 pyspark 命令而不是 python。目前,尝试 pip install pyspark 或 py4j 将破坏 Dataproc 上的 pyspark。您还需要注意不要 pip 安装任何依赖于 pyspark/py4j 的包。我们知道这个问题:)

如果您只是想切换到 Python 3,目前最简单的方法是 运行 创建集群时的 miniconda 初始化操作:https://github.com/GoogleCloudPlatform/dataproc-initialization-actions/blob/master/conda/。该 init 操作还方便地允许您指定要安装的额外 pip 或 conda 包。

我们还知道 pyspark 不在 PYTHONPATH 上用于 python 解释器。现在,如果您想要 运行 pyspark 代码,请使用 pyspark 命令。请注意,pyspark 命令来源 /etc/spark/conf/spark-env.sh,如果您想在 python shell 中 运行 import pyspark,则必须手动执行此操作。

旁注:考虑 运行ning gcloud dataproc jobs submit pyspark (docs) from your workstation or using Jupyter notebook.[=23=),而不是通过 SSH 连接到集群和 运行ning pyspark ]

brew install apache-spark actually already provides a working pyspark shell. It is not necessary to additionally pip install pyspark