Apache Spark 使用自制软件从 1.5.2 升级到 1.6.0,导致执行期间权限被拒绝错误

Posted

技术标签:

【中文标题】Apache Spark 使用自制软件从 1.5.2 升级到 1.6.0,导致执行期间权限被拒绝错误【英文标题】:Apache Spark upgrade from 1.5.2 to 1.6.0 using homebrew leading to permission denied error during execution 【发布时间】:2016-01-06 02:50:49 【问题描述】:

我刚刚使用 Homebrew 将 Spark 从 1.5.2 升级到 1.6.0,并将我的 SPARK_HOME 环境变量重置为 /usr/local/Cellar/apache-spark/1.6.0。现在在执行 pyspark 时,它给出了一个权限被拒绝的错误。 如果我进入早期的 1.5.2 安装目录并从那里执行 pyspark,它运行良好。但是从 1.6.0 安装目录运行 pyspark 失败并出现此权限被拒绝错误。

/usr/local/Cellar/apache-spark/1.6.0/bin/load-spark-env.sh: line 2: /usr/local/Cellar/apache-spark/1.6.0/libexec/bin/load-spark-env.sh: Permission denied

/usr/local/Cellar/apache-spark/1.6.0/bin/load-spark-env.sh: line 2: exec: /usr/local/Cellar/apache-spark/1.6.0/libexec/bin/load-spark-env.sh: cannot execute: Undefined error: 0

这可能是什么原因造成的?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,最简单的解决方法是将 $SPARK_HOME 设置为 /usr/local/Cellar/apache-spark/<your_spark_version>/libexec/

您也可以直接从源代码构建,您可以找到说明here。

基本上就是这样做

git clone https://github.com/apache/spark/`
cd spark
git checkout origin/branch-X.Y

build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests clean package

您需要将$SPARK_HOME 设置为spark 源代码的***目录。

【讨论】:

绝对是一个有用的选择,但我真的需要通过自制软件来完成这项工作 这确实通过自制软件工作,这是我使用的。我在 MAC OSX High Sierra 上运行并按照 /usr/local/Cellar/apache-spark//libexec/ 的建议更改 SPARK_HOME 为我解决了问题。我也遇到了sparkR 的问题,它也解决了这个问题。【参考方案2】:

项目页面上的一张票帮助了:

unset SPARK_HOME && spark-submit

https://github.com/Homebrew/homebrew/issues/48898#issuecomment-180633967

【讨论】:

【参考方案3】:

边做边做 unset SPARK_HOME && pyspark(感谢下面的 noli)

想让 SparkContext 在 Ipython 中运行,结果很简单。

unset SPARK_HOME IPYTHON=1 pyspark

【讨论】:

【参考方案4】:

对于 MacOs 中的 Pyspark 2.4.4 添加到 .bash_profile:

# Pyspark
export SPARK_HOME='/usr/local/Cellar/apache-spark/2.4.4/libexec/'
export PYSPARK_DRIVER_PYTHON="jupyter"
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
#For python 3, You have to add the line below or you will get an 
# error
export PYSPARK_PYTHON=python3
alias snotebook='$SPARK_PATH/bin/pyspark --master local[4]'

然后用

重新加载
source .bash_profile

并使用 pyspark 启动

pyspark 

不要取消设置 SPARK_HOME 否则会出现以下错误:

/Users/user/opt/anaconda3/bin/pyspark: line 24: /bin/load-spark-env.sh: No such file or directory
/Users/user/opt/anaconda3/bin/pyspark: line 77: /bin/spark-submit: No such file or directory
/Users/usr/opt/anaconda3/bin/pyspark: line 77: exec: /bin/spark-submit: cannot execute: No such file or directory

【讨论】:

【参考方案5】:

我也遇到了同样的错误,比如启动spark-shell 的权限被拒绝。 我更改了文件权限。它对我来说很好。 进入spark-1.6.x的父目录并执行以下操作:

chmod 777 spark-1.6.x -R

这将递归地更改文件的权限。

【讨论】:

以上是关于Apache Spark 使用自制软件从 1.5.2 升级到 1.6.0,导致执行期间权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch:Apache spark 大数据集成

如何在 Mac OS 上使用自制软件将 postgresql 从 10.1 降级到 9.6 [关闭]

sh 从自制软件推荐一个随机包

如果从今年开始 EOL,如何使用自制软件安装 php 5.6?

无法从自制软件安装 hdf5 库

使用自制软件时出现冲突的 postgres 问题