在 Google Cloud Dataproc 上安装 pyspark 导致“搜索时找不到有效的 SPARK_HOME ['/tmp', '/usr/local/bin']”

Posted

技术标签:

【中文标题】在 Google Cloud Dataproc 上安装 pyspark 导致“搜索时找不到有效的 SPARK_HOME [\'/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 上安装 pyspark 导致“搜索时找不到有效的 SPARK_HOME ['/tmp', '/usr/local/bin']” 【发布时间】:2018-10-08 20:30:18 【问题描述】:

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

pip3 安装 pyspark

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

搜索['/tmp'时找不到有效的SPARK_HOME, '/usr/local/bin'] /usr/local/bin/spark-submit:第 27 行:/bin/spark-class:没有这样的文件或目录

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

【问题讨论】:

如果提交作业成功运行,那么为什么要安装 pyspark 呢?您的手动安装与配置的 pyspark 冲突 @RameshMaharjan 是的...我刚刚意识到,我尝试安装 pyspark,因为当我在那里运行 python shell 并且它没有 pyspark 模块。现在我正在重新创建我的集群,看看它是否会成功。 祝你好运。 ***.com/questions/44248567/… 应该可以帮助你;) 【参考方案1】:

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/。该初始化操作还允许您方便地指定要安装的额外 pip 或 conda 包。

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

附注:与其通过 SSH 进入集群并运行 pyspark,不如考虑从您的工作站运行 gcloud dataproc jobs submit pyspark (docs) 或使用 Jupyter notebook。

【讨论】:

【参考方案2】:

brew 安装 apache-spark 实际上已经提供了一个工作 pyspark shell。没有必要额外 点安装 pyspark

【讨论】:

以上是关于在 Google Cloud Dataproc 上安装 pyspark 导致“搜索时找不到有效的 SPARK_HOME ['/tmp', '/usr/local/bin']”的主要内容,如果未能解决你的问题,请参考以下文章

无法在Google Cloud Dataproc上启动Apache Flink 1.7

来自 DataProc 集群的 Google Cloud Sdk

Google Cloud Dataproc 删除 BigQuery 表不起作用

在 Google Cloud Dataproc 上安装 pyspark 导致“搜索时找不到有效的 SPARK_HOME ['/tmp', '/usr/local/bin']”

Google Cloud Dataflow 和 Google Cloud Dataproc 有啥区别?

使用 google-cloud-python API 访问 Dataproc 时出现无效区域错误