Среда Conda не найдена при упаковке зависимостей для PySpark на ПРЯЖУ

#python #pandas #apache-spark #pyspark #conda

Вопрос:

Я следую этому руководству по распределению зависимостей pandas и pyarrow между узлами-исполнителями в моем приложении PySpark amp; YARN. Это необходимо для запуска 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 для упаковки зависимостей, но появляется аналогичное сообщение об ошибке. Есть какое-нибудь представление о том, почему это происходит?