Cómo reemplazar el script de envío de Spark con código Java
Ejemplo: encontré un problema al desarrollar un proyecto web combinado con la plataforma Spark Cloud. Cuando una clase hereda ActionSupport y se convierte en una acción, el programa Spark no se puede llamar en su método () (informará). que no se puede encontrar). Hay un error en el paquete Spark Jar y no sé cómo solucionarlo).
Solución: empaquete el programa Spark en un archivo jar, escriba un script, llame a este script en el método de acción () y use Spark-submit para iniciar el programa Spark.
Código de script, CRS.sh:
/usr/local/spark/spark-1.0.0-bin-hadoop1/bin/spark-submit \
--class ar.runCourseCF \
--master local[4] \
/root/IdeaProjects/HelloWorld/web/WEB-INF/lib/test.jar p>
Clase de acción Struts2:
recomendación de clase públicaAcción extiende ActionSupport
implementa ModelDriven
recomendación privada de RecommendationArguments = new RecommendationArguments();
ejecutar cadena pública() arroja una excepción
{
//Ruta del script
String shellPath = "/root/IdeaProjects/ HelloWorld /src/CRS.sh";
System.out.println(shellPath);
ShellUtil shell = new ShellUtil();
shell.runShell ( shellPath);
devolver ÉXITO;
}
argumentos de recomendación pública getModel()
{
devolver recomendación ;
}
}
Java ejecutando código de script:
clase pública ShellUtil {
ejecución pública vacía (String shellPath)
{
//String shellPath="/root/IdeaProjects/CRS.sh" //Ruta del programa
prueba { p>
Proceso proceso = null;
//Agregar permisos
Cadena comando1 = "chmod 777 " + shellPath;
proceso = Runtime .getRuntime ().exec(command1);
process.waitFor();
//Utilice sh CRS.sh para ejecutar el script
String command2 = " sh " + shellPath;
Runtime.getRuntime().exec(command2).waitFor();
}catch(Exception e)
{ p>
System.out.println(e.toString());
/s?wd=52014085078