微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 YARN

如何解决在 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 举报,一经查实,本站将立刻删除。