How to run Spark Application as daemon
我有一个有关运行spark应用程序的基本问题。
我有一个Java客户端,它将向我发送对驻留在HDFS中的查询数据的请求。
我收到的请求是基于HTTP的REST API,我需要解释该请求并形成Spark SQL查询,并将响应返回给客户端。
我无法理解如何使我的spark应用程序成为等待请求的守护程序,并可以使用预先实例化的SQL上下文执行查询?
在该用例中,我看到的最佳选择是Spark Job Server,它将是守护程序应用程序,驱动程序代码作为命名应用程序部署到该应用程序。
此选项为您提供更多功能,例如持久性。
使用作业服务器,您无需编写自己的守护程序,并且客户端应用程序可以直接向其发送REST请求,这将依次执行spark-submit任务。
您可以让一个线程在无限循环中运行以使用Spark进行计算。
1 2 3 4 5 6 | while (true) { request = incomingQueue.poll() // Process the request with Spark val result = ... outgoingQueue.put(result) } |
然后,在处理REST请求的线程中,将请求放入
1 2 3 4 5 | // Create the request from the REST call val request = ... incompingQueue.put(request) val result = outgoingQueue.poll() return result |