在 YARN

问题描述

我正在关注此 guide 以在我的 PySpark 和 YARN 应用程序中跨执行程序节点分发 Pandas 和 pyarrow 依赖项。这是运行 Pandas UDF 所必需的。

我正在像这样创建 Conda 虚拟环境:

conda create -y -n pyspark_conda_env -c conda-forge pyarrow pandas conda-pack
conda activate pyspark_conda_env
conda pack -f -o pyspark_conda_env.tar.gz

然后提交 Spark 作业:

spark_job_config_path = '/tmp/spark_job_config.json'

            cmd = [
                "spark-submit","--master","yarn","--deploy-mode","client","--archives","/opt/program/pyspark_conda_env.tar.gz#environment","/opt/program/image_analysis_launcher.py",]
            cmd.extend([spark_job_config_path])

            subprocess.run(cmd,check = True)

我正在按如下方式创建 Spark 会话:

spark = SparkSession.builder.master("yarn").config("spark.yarn.dist.archives","pyspark_conda_env.tar.gz#environment").appName("AppName").getorCreate()

运行此程序所在的 Docker 容器后,我收到以下错误消息:

py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.io.FileNotFoundException: File file:/usr/spark-3.1.2/pyspark_conda_env.tar.gz#environment does not exist

我也尝试使用 VirtualEnv 和 PEX 来打包依赖项,但是出现了类似的错误消息。对发生这种情况的原因有任何见解吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)