在Oozie上的java操作中运行shell命令时抛出的权限被拒绝
我有这个java代码在Oozie上的java操作中运行shell命令时抛出的权限被拒绝,java,shell,hadoop,bigdata,oozie,Java,Shell,Hadoop,Bigdata,Oozie,我有这个java代码 public static void main(String... args) throws IOException, InterruptedException { execute("echo \"Amer\""); } private static void execute(String command) throws IOException, InterruptedException { ProcessBuilder builder =
public static void main(String... args) throws IOException, InterruptedException {
execute("echo \"Amer\"");
}
private static void execute(String command) throws IOException, InterruptedException {
ProcessBuilder builder = new ProcessBuilder();
builder.command(command);
//builder.directory(new File(System.getProperty("user.home")));
Process process = builder.start();
StreamGobbler streamGobbler =
new StreamGobbler(process.getInputStream(), System.out::println);
Executors.newSingleThreadExecutor().submit(streamGobbler);
int exitCode = process.waitFor();
assert exitCode == 0;
}
我正试图通过java操作在Oozie工作流上运行它
但是当我提交工作流时,它会被以下异常终止(java.io.IOException:error=13,权限被拒绝)
org.apache.oozie.action.hadoop.JavaMainException:java.io.IOException:
无法运行程序“echo”Amer“”:错误=13,权限在被拒绝
org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:60)位于
org.apache.oozie.action.hadoop.launchemain.run(launchemain.java:78)
位于org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:35)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于
invoke(NativeMethodAccessorImpl.java:62)
在
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:498)
org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:231)
位于org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465)位于
org.apache.hadoop.mapred.MapTask.run(MapTask.java:349)位于
org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)位于
java.security.AccessController.doPrivileged(本机方法)位于
javax.security.auth.Subject.doAs(Subject.java:422)位于
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1688)
在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168)上
by:java.io.IOException:无法运行程序“echo”Amer“”:错误=13,
拒绝在
start(ProcessBuilder.java:1048)位于
位于的ShellCommandExecutor.execute(ShellCommandExecutor.java:18)
main(ShellCommandExecutor.java:11)位于
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于
invoke(NativeMethodAccessorImpl.java:62)
在
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:498)
org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:57)。。。15
更多原因:java.io.IOException:error=13,权限在被拒绝
位于的java.lang.UNIXProcess.forkAndExec(本机方法)
UNIXProcess.java:247)
java.lang.ProcessImpl.start(ProcessImpl.java:134)位于
java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)。。。还有22个
任何提示?
builder.command(“sh”和“-c”命令)代码>如果你想运行一个shell命令,而不是一个带有参数数组的程序,那么非常感谢你,它可以工作<代码>生成器命令(“sh”、“-c”,命令)代码>如果你想运行一个shell命令,而不是一个带有参数数组的程序,那么非常感谢你,它可以工作!!