pyspark找不到有效的SPARK_HOME

时间:2019-04-08 09:16:40

标签: ubuntu pyspark environment-variables

在尝试设置和运行pyspark时,出现以下错误:

tom@tom-OptiPlex-3060:~$ pyspark
Could not find valid SPARK_HOME while searching ['/home', '/home/tom/.local/bin']
/home/tom/.local/bin/pyspark: line 24: /bin/load-spark-env.sh: No such file or directory
/home/tom/.local/bin/pyspark: line 77: /bin/spark-submit: No such file or directory

但是如果我进入目录/usr/lib/spark/bin-pyspark有效

我在这里想念什么?

export JAVA_HOME=/usr/lib/jvm/java-8-oracle  
export SBT_HOME=/usr/share/sbt-launcher-packaging/bin/sbt-launch.jar  
export SPARK_HOME=/usr/lib/spark
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$SBT_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
export PYSPARK_PYTHON=python2.7
export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH

2 个答案:

答案 0 :(得分:1)

似乎您有2种不同的pyspark安装。 pyspark正在使用/home/tom/.local/bin/pyspark中的安装,而不是/usr/lib/spark/bin中的安装。

可能是您手动安装在/usr/lib/spark中,另一个是通过pip安装的。如要使用/usr/lib/spark。请卸载一个点,将/usr/lib/spark/bin添加到您的路径中,它应该可以工作

答案 1 :(得分:1)

当我将python代码组织到程序包/模块中并且从一个程序包导入到另一个程序包时,我遇到了这个错误。

如果我有一个没有任何软件包的简单脚本,<IncrementButton Increment="-1" @bind-Attribute="Amount"/> <span>@Amount</span> <IncrementButton Increment="1" @bind-Attribute="Amount"/> <span>@bottomPillAmount</span> @code { private int amount; [Parameter] public int Amount { get => amount; set { if(amount != value) { amount = value; UpdateBottomPillText(); } } } string bottomPillAmount; string UpdateBottomPillText() { double amountAdded = Math.Floor(((double)(Amount - 10.0)) / 2.0); bottomPillAmount = amountAdded > 0 ? "+" + amountAdded.ToString() : amountAdded.ToString(); return Amount.ToString(); } protected override void OnParametersSet() { UpdateBottomPillText(); } } 位于SPARK_HOME中,并且等于os.environ(您的值可以不同,只需/usr/hdp/current/spark2-client即可知道)。

在有问题的函数/程序包中简单设置此变量会导致失败:

print(os.environ['SPARK_HOME']

就我而言,我通过将此参数传递给import os os.environ['SPARK_HOME'] = '/usr/hdp/current/spark2-client' 来解决了这个问题:

spark-submit

(可以提供帮助的其他信息:我使用--conf spark.yarn.appMasterEnv.SPARK_HOME=/usr/hdp/current/spark2-client 作为管理员)