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

标签 shell hadoop oozie spark-submit oozie-workflow

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

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

/usr/lib/spark/bin/spark-submit --driver-java-options "-Dcurrent.job.id=$1 -Dexecutive.transform.dumpname=$dump_name -Dexecutive.transform.source=$SOURCE -Dexecutive.transform.jobid=$1 -Dexecutive.transform.run=$run_id -Dlogging.job.type=$JOB_TYPE -Dlogging.module.name=$MODULE_NAME" --conf spark.executor.extraJavaOptions="-Dcurrent.job.id=$1 -Dexecutive.transform.dumpname=$dump_name -Dexecutive.transform.source=$SOURCE -Dexecutive.transform.jobid=$1 -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 $5/deploy/etl/dp-properties/DPProperties-$dp_version.jar,$5/deploy/etl/contact-transform/jars/ExecNameTransformer-$dp_version.jar,$5/deploy/hbase/lib/hbase-client.jar,$5/deploy/hbase/lib/hbase-common.jar,$5/deploy/hbase/lib/hbase-server.jar,$5/deploy/hbase/lib/protobuf-java-2.5.0.jar,$5/deploy/hbase/lib/hbase-protocol.jar,$5/deploy/hbase/lib/htrace-core-3.1.0-incubating.jar,$5/deploy/etl/contact-transform/jars/
./first.sh: line 64: /usr/lib/spark/bin/spark-submit: No such file or directory

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

最佳答案

失败的原因是 shell 操作将在集群中的任意节点上运行,而这些节点上没有安装 spark-submit(因此出现“没有这样的文件或目录”错误)。

你有两个选择:

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

关于shell - 通过 Oozie 工作流提交的 shell 脚本中存在 Spark-submit 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412073/

相关文章:

linux - 我可以在 bash shell 中对变量进行 for 循环吗?

java - 将 MapReduce 输出拆分为多个输出文件

java - 具有 2 个键的 Mapreduce

hadoop - Sqoop失败,错误消息[java.lang.ClassNotFoundException:类org.apache.oozie.action.hadoop.SqoopMain未找到]

Shell 脚本不适用于使用 Hue 的 Oozie

shell - 如何让别名传播到另一个 shell 脚本

linux - 如果在 xargs 中

linux - shell脚本: Contact list

hadoop - 使用 Flume 将 Twitter 数据流式传输到 Hadoop 时出错

java - 如何使用 oozie 协调器延迟工作流操作