通过 Oozie 工作流提交的 shell 脚本中的 Spark-submit 不起作用

Spark-submit is not working which is there in shell script submitted thru Oozie workflow

通过 Oozie Workflow,我提交了一个 shell 脚本,其中包含 spark-submit 命令。

我通过 oozie 控制台在 hdfs /user/admin/first.sh 中上传了 shell 脚本。当我 运行ning 脚本直到 spark-submit 命令时,它 运行ning 很好。当它尝试 运行 spark-submit cmd 时,它失败了。本地文件系统中存在 spark-submit 的原因,但我的脚本在 hadoop 文件系统中 运行ning 具有 hadoop 管理员用户。任何解决这个问题的方法。如何从 hadoop 文件系统中的 hadoop 用户 运行 本地文件系统 (spark-submit) 命令,或者我可以在 Oozi 的帮助下将脚本从 hadoop 文件系统复制到本地文件系统。

/usr/lib/spark/bin/spark-submit --driver-java-options "-Dcurrent.job.id= -Dexecutive.transform.dumpname=$dump_name -Dexecutive.transform.source=$SOURCE -Dexecutive.transform.jobid= -Dexecutive.transform.run=$run_id -Dlogging.job.type=$JOB_TYPE -Dlogging.module.name=$MODULE_NAME" --conf spark.executor.extraJavaOptions="-Dcurrent.job.id= -Dexecutive.transform.dumpname=$dump_name -Dexecutive.transform.source=$SOURCE -Dexecutive.transform.jobid= -Dexecutive.transform.run=$run_id -Dlogging.job.type=$JOB_TYPE -Dlogging.module.name=$MODULE_NAME"  --master yarn-cluster --deploy-mode cluster --conf spark.yarn.user.classpath.first=true --class com.insideview.transform.ExecutiveTransformerSparkPipelineJob --jars /deploy/etl/dp-properties/DPProperties-$dp_version.jar,/deploy/etl/contact-transform/jars/ExecNameTransformer-$dp_version.jar,/deploy/hbase/lib/hbase-client.jar,/deploy/hbase/lib/hbase-common.jar,/deploy/hbase/lib/hbase-server.jar,/deploy/hbase/lib/protobuf-java-2.5.0.jar,/deploy/hbase/lib/hbase-protocol.jar,/deploy/hbase/lib/htrace-core-3.1.0-incubating.jar,/deploy/etl/contact-transform/jars/
./first.sh: line 64: /usr/lib/spark/bin/spark-submit: No such file or directory

我有几个数据库步骤,例如 select 语句,在 spark-submit 之前 运行ning 没问题。当它进入 spark-submt 步骤时,由于本地文件系统,它无法 运行。

失败的原因是 shell 操作将 运行 在集群中的任意节点上,而这些节点上没有安装 spark-submit(因此 "No such file or directory"错误)。

您有两个选择:

  1. 继续使用 shell 脚本并在集群中的所有数据节点上安装 spark-submit。
  2. 使用 Oozie Spark 操作