【问题标题】:How to run Spark Application as daemon如何将 Spark 应用程序作为守护程序运行
【发布时间】:2024-05-19 04:20:02
【问题描述】:
我有一个关于运行 spark 应用程序的基本问题。
我有一个 Java 客户端,它将向我发送对驻留在 HDFS 中的查询数据的请求。
我收到的请求是基于 HTTP 的 REST API,我需要解释请求并形成 Spark SQL 查询并将响应返回给客户端。
我无法理解如何将我的 spark 应用程序设置为等待请求并可以使用预实例化的 SQL 上下文执行查询的守护程序?
【问题讨论】:
标签:
apache-spark
apache-spark-sql
spark-dataframe
【解决方案1】:
我见过的这个用例的最佳选择是Spark Job Server,它将是守护程序应用程序,您的驱动程序代码作为命名应用程序部署到它。
此选项为您提供更多功能,例如持久性。
使用作业服务器,您无需编写自己的守护程序,并且您的客户端应用程序可以直接向它发送 REST 请求,进而执行 spark-submit 任务。
【解决方案2】:
你可以有一个无限循环运行的线程来使用 Spark 进行计算。
while (true) {
request = incomingQueue.poll()
// Process the request with Spark
val result = ...
outgoingQueue.put(result)
}
然后在处理 REST 请求的线程中,将请求放入incomingQueue 并等待来自outingQueue 的结果。
// Create the request from the REST call
val request = ...
incompingQueue.put(request)
val result = outgoingQueue.poll()
return result