spark-submit指定python版本报错,提示error=13, Permission denied

spark-submit指定python版本报错

一、错误提示

错误提示为:Cannot run program “/home/python3”: error=13, Permission denied

二、分析原因

(1)centos7安装了两个版本的python,分别为python2.7.5(默认),同时安装了python3,想pyspark使用python3作为运行环境。

通过命令方式指定提交作业时的运行环境:
spark-submit --master yarn /mydata/1.py --master yarn --driver-memory 1g --num-executors 2 --executor-memory 1g --executor-cores 1 --queue PyDevSpark2.4.5 --jars /usr/hdp/3.1.0.0-78/spark2/extjars/now/univocity-parsers-1.5.1.jar,/usr/hdp/3.1.0.0-78/spark2/extjars/now/commons-csv-1.1.jar,/usr/hdp/3.1.0.0-78/spark2/extjars/now/spark-csv_2.10-1.2.0.jar –conf spark.pyspark.python=/home/python3 –conf spark.pyspark.driver.python=/home/python3/

(2)被错误提示误导,以为是没有访问权限造成。系统安装了ambari2.7.3+hadoop HDFS3.1.3+spark2.4.5。

刚开始是修改python3(自己编译安装在/home/python3下)的目录访问权限和执行权限,赋予hdfs(ambari默认的hadoop用户名)用户。
chown -R hdfs.hadoop /home/python3
chmod -r 777 /home/python3
问题没有得到解决,通过hdfs用户可以直接运行python3初步判断可能不是访问权限问题。

三、解决问题(centos7-1908)

两种方法:

1、指定pyspark运行的python环境,特别注意这里不是python目录,而是python运行文件。

本系统安装在/home/python3/bin/python3,如果指定了python3的软连接,可以直接使用python3。
修改/etc/profile或者当前用户名下的bashc文件,增加如下:

export PYSPARK_PYTHON=/home/python3/bin/python3
export PYSPARK_DRIVER_PYTHON=/home/python3/bin/python3
为了使其马上生效,source /etc/profile。

2、在提交给yarn运行时指定python版本,这里最好是采用绝对路径,如:

spark-submit --master yarn /mydata/1.py --master yarn --driver-memory 1g --num-executors 2 --executor-memory 1g --executor-cores 1 --queue PyDevSpark2.4.5 --jars /usr/hdp/3.1.0.0-78/spark2/extjars/now/univocity-parsers-1.5.1.jar,/usr/hdp/3.1.0.0-78/spark2/extjars/now/commons-csv-1.1.jar,/usr/hdp/3.1.0.0-78/spark2/extjars/now/spark-csv_2.10-1.2.0.jar –conf spark.pyspark.python=/home/python3/bin/python3 –conf spark.pyspark.driver.python=/home/python3/bin/python3

四、问题得到解决,运行成功:

1、yarn服务器截图:

spark-submit指定python版本报错,提示error=13, Permission denied

2、spark集群截图:

spark-submit指定python版本报错,提示error=13, Permission denied

3、命令提示截图:

spark-submit指定python版本报错,提示error=13, Permission denied