我可以使用 Spark 作为服务吗

Kal*_*esh 5 architecture rest scala dataframe apache-spark

用例是我想将数据帧作为对象返回,以提供休息服务。Rest 服务没有 Spark 上下文控制。那么有什么方法可以执行 ANSI 查询,就像我在 registerAsTemptable 上执行的那样。
我将通过休息服务传递表名和查询。然后我应该返回一些作为对象的东西,我可以将其显示为视图中的表格。

如果有任何替代方法,也请提出。但我想使用 Spark 作为基础框架。

T. *_*ęda 3

不,您不能将 DataFrame 返回到 Rest 服务。它不会在 Spark 上下文之外工作。

Spark 没有开箱即用的服务支持

但是,您可以:

  1. 启动JDBC Spark Server并查询该服务器。这是连接到该服务器的教程。它不是REST 服务,它只是 JDBC 服务器。您可以从 REST 服务连接到它(但不是以 REST 方式,只是用作数据源),将其用作数据源
  2. 将作业提交到Livy Server - 您的服务可能会调用 Livy 在 Spark 中运行一些作业
  3. 将作业提交到Spark REST API - 您的服务可能会调用 Livy 在 Spark 中运行某些作业,但在这种情况下,作业文件必须位于集群中的 JAR 文件中

第二个和第三个选项都需要准备工作代码。它不是您可以通过查询调用它的 REST 服务/get/table/row=1,您必须准备自己的服务,该服务将通过正确的计算提交作业。

结论: 不,Spark 没有内置的 REST 服务来查询数据。但是,它有一些选项可以以 REST 风格运行预定义作业并查询数据。但是,这需要构建您自己的服务。他们必须使用预定义作业查询正确的 Spark API。

如果您只想运行 SQL 查询,请考虑使用 JDBC Spark Server 作为服务的数据源。