Python : 3.7.3
OS: CentOS 7
Spark: 2.2.0
In Cloudera
YARN : 2.6.0-cdh5.10.2
Run Code Online (Sandbox Code Playgroud)
嗨,我尝试使用带有pyspark 的python脚本执行Apache Spark,但我不明白它是如何工作的。我尝试在客户端模式下使用yarn发送整个conda 环境,并在执行. 但问题是,主要的 python 脚本在哪里运行,因为我需要指定我的共享 conda 环境的位置才能执行而不会出错,因为在我尝试执行的主机中我没有安装依赖项,我不想要安装它。--archivesspark-submitspark-submit
我使用此功能打包环境https://conda.github.io/conda-pack/spark.html,我需要导入地图外的依赖项(因为在地图内,纱线运送依赖项和执行者很好地导入了这个依赖项)。
有没有一种方法可以在不打开和在主机上使用的情况下使用附带的环境执行主 python 脚本?
我的环境是:
PYSPARK_DRIVER_PYTHON=./enviroment/bin/python
PYSPARK_PYTHON=./enviroment/bin/python
Run Code Online (Sandbox Code Playgroud)
其中环境是yarn附带的依赖项的符号链接
--archives ~/dependencies.tar.gz#enviroment
Run Code Online (Sandbox Code Playgroud)
并配置执行器
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python
Run Code Online (Sandbox Code Playgroud)
所以最后的命令是
PYSPARK_DRIVER_PYTHON=./enviroment/bin/python \
PYSPARK_PYTHON=./environment/bin/python \
spark-submit \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python \
--master yarn --deploy-mode client \
--archives enviroment/dependencies.tar.gz#enviroment \
cluster-import-check.py
Run Code Online (Sandbox Code Playgroud)
我的代码是
# coding=utf8
from pyspark import SparkConf
from pyspark import …Run Code Online (Sandbox Code Playgroud)