【发布时间】:2015-11-17 07:32:00
【问题描述】:
我正在使用ProcessBuilder 从 Java 调用一个 shell 脚本,但我没有得到任何价值。它显示一个空结果。
这是我的代码:
package webservice;
import java.io.IOException;
import java.io.InputStream;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/hello")
public class HelloWorldService {
@GET
@Path("/{param}/{param2}/{param3}")
public Response getMsg(@PathParam("param") String bedroom,@PathParam("param2") String bathroom,@PathParam("param3")String area) throws IOException {
ProcessBuilder pb = new ProcessBuilder("/script/spark-submit.sh");
pb.environment().put("a", bedroom);
pb.environment().put("b", bathroom);
pb.environment().put("c", area);
Process p=pb.start();
InputStream is = p.getInputStream();
int i =0;
StringBuffer sb = new StringBuffer();
while((i=is.read())!=-1)
sb.append((char)i);
System.out.println("value of sb:"+sb.toString());
String a =sb.toString();
System.out.println("value of a:"+a);
String[] arr = a.split(" ");
if (arr != null)
{
System.out.println("predicted value is " + arr[arr.length - 1]);
}
String output = "predicted value is " + arr[arr.length - 1];
return Response.status(200).entity(output).build();
}
}
shell脚本代码
spark-submit --class scalatest.scalatest.scalatest --master local[4] /home/ec2-user/scalatest-0.0.1-SNAPSHOT.jar $a $b $c
【问题讨论】:
-
你能告诉我 spark-submit.sh 文件的内容吗
-
你能改变进程构建器调用如下吗?String[] command = {"/bin/bash", "/script/spark-submit.sh"}; ProcessBuilder p = new ProcessBuilder(command);
-
spark-submit --class scalatest.scalatest.scalatest --master local[4] /home/ec2-user/scalatest-0.0.1-SNAPSHOT.jar $a $b $c跨度>
标签: java spring shell hadoop processbuilder