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

时间:2018-04-28 00:48:01

标签: apache-spark pyspark pip google-cloud-platform google-cloud-dataproc

我使用Google Cloud Dataproc创建了一个群集。我可以将作业提交到集群,直到我

  

pip3安装pyspark

集群上的

。之后,每次我尝试提交作业时,都会收到错误:

  

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

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

2 个答案:

答案 0 :(得分:1)

Pyspark已经预先安装在Dataproc上 - 您应该调用pyspark命令而不是python。目前,尝试pip install pyspark或py4j将破坏Dataproc上的pyspark。您还需要注意不要安装任何依赖于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命令来源import pyspark,如果您想在python shell中运行pyspark,则必须手动执行此操作。

附注:不是通过SSH连接到群集并运行gcloud dataproc jobs submit pyspark,而是考虑从工作站运行$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv(); $spreadsheet = $reader->load('File.csv'); $sheetData = $spreadsheet->getActiveSheet()->toArray(); echo '<pre>'; print_r($sheetData); docs)或使用Jupyter notebook

答案 1 :(得分:0)

brew install apache-spark 实际上已经提供了一个有效的pyspark shell。无需额外 pip安装pyspark