いくつかの Spark python スクリプトを Oozie ワークフローとして実行する必要があります。Spark を使用してローカルでスクリプトをテストしましたが、それらを Oozie に送信すると、なぜ機能しないのかわかりません。私は Cloudera VM を使用しており、Oozie は Hue ダッシュボードで管理しています。spark アクションのワークフロー構成は次のとおりです。
Spark Master: local[*]
Mode: client
App name: myApp
Jars/py files: hdfs://localhost:8120/user/cloudera/example.py
Main class: org.apache.spark
何かを出力するだけの簡単な例も実行しようとしましたが、Oozie に送信するすべてのスクリプトで次の出力が得られます。
>>> Invoking Spark class now >>>
Intercepting System.exit(1)
<<< Invocation of Main class completed <<<
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], exit code [1]
Oozie Launcher failed, finishing Hadoop job gracefully
Oozie Launcher, uploading action data to HDFS sequence file: hdfs://quickstart.cloudera:8020/user/cloudera/oozie-oozi/0000005-161228161942928-oozie-oozi-W/spark-cc87--spark/action-data.seq
Oozie Launcher ends
[編集]
spark master: yarn-cluster を設定した場合にのみワークフローが開始されることがわかりましたが、このモードでも、spark アプリがステータス ACCEPTED のままである間、95% 完了マップでスタックしたままの糸コンテナーが起動されます。Spark アクションを開始できるように、Yarn メモリ パラメータを変更しようとしています。スタウトはハートビートを印刷するだけです
[解決済み]
oozie ワークフローは、py ファイルがローカルにある場合にのみ開始され、hue がワークフロー フォルダーを作成した後に手動で lib フォルダーに挿入されます。最良の解決策は、spark-submit を使用してシェル スクリプトを作成することだと思います。