如何将Spark应用程序作为守护程序运行

时间:2016-07-12 10:56:29

标签: apache-spark apache-spark-sql spark-dataframe

我有一个关于运行spark应用程序的基本问题。

我有一个Java客户端,它会向我发送驻留在HDFS中的查询数据请求。

我得到的请求是基于HTTP的REST API,我需要解释请求并形成Spark SQL查询并将响应返回给客户端。

我无法理解如何将我的spark应用程序作为等待请求的守护进程并使用预先实例化的SQL上下文执行查询?

2 个答案:

答案 0 :(得分:2)

我在这个用例中看到的最佳选择是Spark Job Server,它将是守护程序应用程序,并将您的驱动程序代码作为命名应用程序部署到它。

此选项为您提供更多功能,例如持久性。

使用作业服务器,您不需要编写自己的守护程序代码,而客户端应用程序可以直接向其发送REST请求,然后执行spark提交任务。

答案 1 :(得分:0)

你可以让一个在无限循环中运行的线程用Spark进行计算。

while (true) {
  request = incomingQueue.poll()
  // Process the request with Spark
  val result = ...
  outgoingQueue.put(result)      
}

然后在处理REST请求的线程中,将请求放在incomingQueue中并等待来自outgoingQueue的结果。

 // Create the request from the REST call
 val request = ...
 incompingQueue.put(request)
 val result = outgoingQueue.poll()
 return result