通过oozie工作流,我提交了一个shell脚本,其中包含spark submit命令。
我通过oozie控制台上传了hdfs/user/admin/first.sh中的shell脚本。当我运行脚本直到spark submit命令时,它运行良好。当它试图运行spark submit cmd时,它失败了。原因spark submit在本地文件系统中,但我的脚本在hadoop文件系统中运行,hadoop admin user。任何克服这个问题的方法。如何在hadoop文件系统中从hadoop用户运行local file system(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
我有一些db步骤,比如select语句,它们在spark提交之前运行良好。当它到达spark submt步骤时,由于本地文件系统的原因,它无法运行。
1条答案
按热度按时间ubby3x7f1#
它失败的原因是shell操作将在集群中的任意节点上运行,而这些节点上没有安装spark submit(因此出现“no-such-file or directory”错误)。
您有两种选择:
继续使用shell脚本并在集群中的所有数据节点上安装spark submit。
使用oozie spark动作