很多人都问过这个问题但除了链接和参考文献之外没有明确的答案,而且大多数都不是最近的。问题是: 我有一个Web应用程序需要利用spark集群来运行spark-sql查询。我的理解是提交作业脚本是异步的,因此这在这里不起作用。如何在这样的设置中利用spark?我可以像在自包含的火花应用程序中一样在Web应用程序中编写代码,即创建上下文,设置主URL并执行我需要做的操作吗?这会在网络应用程序中运行吗?如果是,那么何时需要提供REST API的作业服务器来提交作业?
答案 0 :(得分:0)
用于启动Spark应用程序的库。
此库允许应用程序以编程方式启动Spark。该库只有一个入口点 - SparkLauncher 类。
要启动Spark应用程序,只需实例化 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();
}
}
参考文献: https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/launcher/package-summary.html
答案 1 :(得分:0)
我认为选项将是
通过像Livy这样的休息api(Livy是一个新的开源Spark REST 用于提交和与您的Spark作业交互的服务器 任何地方。 )或Spark服务器(REST API) - 了解它们如何连接 使用内核交互式激发 - https://www.youtube.com/watch?v=TD1J7MzYcFo&feature=youtu.be&t=33m19s
通过jdbc(通过Thrift JDBC / ODBC服务器运行)