【问题标题】: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
      

      【讨论】: