この問題は、以前の質問hereの続きであり、解決されたように見えますが、別の問題として here につながります。
Cloudera QuickstartVM CHD-5.4.0 で Spark 1.4.0 を使用しています。PySpark スクリプトを Oozie で SparkAction として実行すると、Oozie ジョブ/コンテナー ログで次のエラーが発生します。
KeyError: 'SPARK_HOME'
それから、私はまだ試しましたが、実際にはSpark 1.3.0用のこのソリューションとこれに出くわしました。ドキュメントによると、この問題は Spark バージョン 1.3.2 および 1.4.0 で既に修正されているようです (ただし、ここで同じ問題が発生しています)。
リンクで提案された解決策は、実際を指していないパスであっても(つまり、これらを実際の SPARK_HOME に設定しましたが) spark.yarn.appMasterEnv.SPARK_HOME
、何にでも設定する必要があるというものでした。spark.executorEnv.SPARK_HOME
SPARK_HOME
/bogus
後の私のワークフローは次のとおりです。
<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
権利を期待すべきではありませんか? 以前の関連記事で、Java で記述された SparkAction を備えた Cloudera QuickstartVM CDH-5.4.0 に同梱されている Oozie ジョブ サンプルが私のテストで動作していたことに注意してください。問題は Python だけにあるようです。
助けてくれる人に感謝します。