Java 作为spark作业的一部分运行shell脚本

Java 作为spark作业的一部分运行shell脚本,java,scala,shell,hadoop,apache-spark,Java,Scala,Shell,Hadoop,Apache Spark,我正在使用spark submit提交一个sparkjob,其中包含一个shell脚本的执行。 我已将脚本执行的逻辑编写为: val paraname = encFile.substring(0,encFile.length()-4) val pb = new ProcessBuilder("/home/roswal01/gpghdfs.sh",paraname) val p : Process = pb.start() 但是当我在spark的工作中运行这个时,它给了我一

我正在使用spark submit提交一个sparkjob,其中包含一个shell脚本的执行。 我已将脚本执行的逻辑编写为:

 val paraname = encFile.substring(0,encFile.length()-4)
     val pb = new ProcessBuilder("/home/roswal01/gpghdfs.sh",paraname)
     val p : Process = pb.start()
但是当我在spark的工作中运行这个时,它给了我一个错误

java.io.IOException: Cannot run program

这里可能有什么问题?

是否可能bash文件上没有设置可执行文件属性,例如

chmod +x /home/roswal01/gpghdfs.sh

如果您使用的是HDFS,那么我的unix Home上的@DavidSchuler上存储的shell脚本在哪里?但是该脚本在HDFS中的某个位置,并尝试从那里引用它instead@DavidSchuler我也试过了,但也犯了同样的错误。谢谢你花时间给出答案。正是因为像你这样乐于助人的同龄人,我们才能作为一个社区一起学习。以下是一些如何让你的答案变得很好的技巧:。