Mil*_*avi 5 java rest jersey apache-spark
我想在我的restful web服务中运行Spark SQL查询,那么如何通过Jersey上下文运行Spark Context?我需要将我的Spark SQL请求传递给集群,然后通过REST API将结果返回给用户.但是在Spark Documentations中,没有办法在java代码中运行Spark SQL查询而无需将jar文件提交到集群(master/slaves).
小智 4
如果您使用的 Spark 版本 > 1.4,则可以使用SparkLauncher来运行您的应用程序。
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();
}
}
Run Code Online (Sandbox Code Playgroud)
为了让它工作,你应该给它一个 jar 文件。由于您想要运行 SparkSQL 查询,那么您可以将其打包在单个 jar 文件中,或者您可以让一个 jar 获取您想要执行的查询作为参数。
需要注意的是,每次要执行查询时都必须启动/停止 SparkContext。如果你不介意等待的话那就没问题了。但如果时间很重要,那么我建议编写一个单独的服务,让 Spark 上下文始终处于运行状态,并且您的应用程序将对其进行调用。
| 归档时间: |
|
| 查看次数: |
1462 次 |
| 最近记录: |