python - Spark 提交 : Cannot run with virtualenv

标签 python apache-spark pyspark virtualenv spark-submit

我有一个 python 应用程序,我想使用 spark submit 通过虚拟环境运行它。这是我的命令

PYSPARK_PYTHON=./venv/bin/python spark-submit --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./venv/bin/python --master yarn --deploy-mode cluster --archives venv.zip#venv test.py

这里,venv.zip 是存档的虚拟环境。现在,当我运行 spark-submit 命令时,我在控制台上看到了这个

20/01/28 17:08:12 INFO org.apache.hadoop.yarn.client.RMProxy: Connecting to ResourceManager at myMasterNode/some.ip:somePort
20/01/28 17:08:13 INFO org.apache.hadoop.yarn.client.AHSProxy: Connecting to Application History server at myMasterNode/some.ip:somePort
20/01/28 17:08:16 INFO org.apache.hadoop.yarn.client.api.impl.YarnClientImpl: Submitted application application_1580155727514_5620
Exception in thread "main" org.apache.spark.SparkException: Application application_1580155727514_5620 finished with failed status
    at org.apache.spark.deploy.yarn.Client.run(Client.scala:1165)
    at org.apache.spark.deploy.yarn.YarnClusterApplication.start(Client.scala:1520)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:894)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:198)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:228)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

在 yarn 日志上,这是我看到的

20/01/28 17:08:53 ERROR org.apache.spark.deploy.yarn.ApplicationMaster: User class threw exception: java.io.IOException: Cannot run program "./signal/bin/python": error=2, No such file or directory
java.io.IOException: Cannot run program "./venv/bin/python": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

我做错了什么?我如何确保 venv.zip 被正确复制和解压缩?

最佳答案

解压后在 #venv 中放置了一个 venv 目录。

spark.yarn.appMasterEnv.PYSPARK_PYTHON=./venv/venv/bin/python 也应该如此

如果你把zip改成tar.gz,这个问题就会消失

关于python - Spark 提交 : Cannot run with virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59953911/

相关文章:

python - 你如何遍历一棵树?

python - 找到了哪种模式?

python - 缺失值在 conti var 中替换为 med/mean,在 pandas dataframe 中替换为 categorical var 中的模式 - 按列对数据进行分组后)

Python:如何将消息小部件的文本更改为用户输入

dataframe - Spark Scala 中减去两个数据帧中的列以获得差异

scala - 我们可以在德鲁伊中进行转换吗

scala - 如何避免在 Scala 的 Spark RDD 中使用收集?

apache-spark - Spark 窗口函数最后一个非空值

python - 根据条件将pyspark数据帧拆分为多个数据帧

pyspark - 无法为 Azure Databricks 实例化 EventHubSourceProvider