Java 如何在RESTWeb服务上下文中调用spark作业?
我想在restful web服务中运行Spark SQL查询,那么如何通过Jersey上下文运行Spark上下文呢?我需要将sparksql请求传递给集群,然后通过restapi将结果返回给用户。但是在Spark文档中,如果不将jar文件提交到集群(主/从),就无法在java代码中运行Spark SQL查询。如果您使用的是Spark version>1.4,则可以使用来运行应用程序Java 如何在RESTWeb服务上下文中调用spark作业?,java,rest,jersey,apache-spark,Java,Rest,Jersey,Apache Spark,我想在restful web服务中运行Spark SQL查询,那么如何通过Jersey上下文运行Spark上下文呢?我需要将sparksql请求传递给集群,然后通过restapi将结果返回给用户。但是在Spark文档中,如果不将jar文件提交到集群(主/从),就无法在java代码中运行Spark SQL查询。如果您使用的是Spark version>1.4,则可以使用来运行应用程序 import org.apache.spark.launcher.SparkLauncher; public c
import org.apache.spark.launcher.SparkLauncher;
public class MyLauncher {
public static void main(String[] args) throws Exception {
Process spark = new SparkLauncher()
.setAppResource("/my/app.jar")
.setMainClass("my.spark.app.Main")
.setMaster("local")
.setConf(SparkLauncher.DRIVER_MEMORY, "2g")
.launch();
spark.waitFor();
}
}
为了让它工作,你应该给它一个jar文件。由于您希望运行SparkSQL查询,因此可以将其打包到单个jar文件中,也可以将jar作为要执行的查询的参数
需要注意的是,每次要执行查询时都必须开始停止SparkContext。如果你不介意等,那就好了。但是,如果时间是一件大事,那么我建议编写一个单独的服务,让spark上下文始终处于启动状态,并且您的应用程序将调用它。我刚刚意识到这个问题已经很老了,但是由于它没有得到回答,而且可能有人有相同的问题,所以我回答了它!