这个问题是我之前的问题here的延续,它看似已解决,但导致here成为另一个问题。
我在 Cloudera QuickstartVM CHD-5.4.0 上使用 Spark 1.4.0。当我在 Oozie 中将 PySpark 脚本作为 SparkAction 运行时,我在 Oozie 作业/容器日志中遇到此错误:
KeyError: 'SPARK_HOME'
然后我遇到了这个解决方案,这实际上是针对 Spark 1.3.0 的,尽管我仍然尝试过。文档似乎说这个问题已经在 Spark 版本 1.3.2 和 1.4.0 中得到修复(但我在这里遇到了同样的问题)。
链接中建议的解决方案是我需要设置任何spark.yarn.appMasterEnv.SPARK_HOME
东西spark.executorEnv.SPARK_HOME
,即使它只是任何不指向实际的路径SPARK_HOME
(即/bogus
,尽管我确实将这些设置为实际的 SPARK_HOME)。
这是我之后的工作流程:
<spark xmlns="uri:oozie:spark-action:0.1">
<job-tracker>${resourceManager}</job-tracker>
<name-node>${nameNode}</name-node>
<master>local[2]</master>
<mode>client</mode>
<name>${name}</name>
<jar>${workflowRootLocal}/lib/my_pyspark_job.py</jar>
<spark-opts>--conf spark.yarn.appMasterEnv.SPARK_HOME=/usr/lib/spark spark.executorEnv.SPARK_HOME=/usr/lib/spark</spark-opts>
</spark>
这似乎解决了上面的原始问题。但是,当我尝试检查 Oozie 容器日志的 stderr 时,它会导致另一个错误:
Error: Cannot load main class from JAR file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/cloudera/appcache/application_1437103727449_0011/container_1437103727449_0011_01_000001/spark.executorEnv.SPARK_HOME=/usr/lib/spark
如果我使用 Python,它不应该期望一个main class
正确的吗?请注意,在我之前的相关文章中,Cloudera QuickstartVM CDH-5.4.0 附带的 Oozie 作业示例在我的测试中运行,该示例具有用 Java 编写的 SparkAction。似乎问题仅存在于 Python 中。
非常感谢任何可以提供帮助的人。