问题描述
我正在关注此 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 (将#修改为@)