【问题标题】:Can I use spark as a service我可以使用 spark 作为服务吗
【发布时间】:2016-12-01 00:05:04
【问题描述】:
用例是我想将数据框作为对象返回,以进行休息服务。
休息服务没有火花上下文控制。
那么有什么方法可以让我执行 ANSI 查询,比如我在 registerAsTemptable 上的执行方式。
我将传递表名和查询表单休息服务。然后我应该将一些东西作为一个对象返回,我可以在视图中显示为一个表格。
如果有任何替代方法,那么也请提出建议。但我想使用 spark 作为基础框架。
【问题讨论】:
标签:
scala
rest
apache-spark
dataframe
architecture
【解决方案1】:
不,您不能将 DataFrame 返回到 Rest 服务。它不能在 Spark 上下文之外工作。
Spark 没有开箱即用的服务支持
但是,您可以:
- 启动JDBC Spark Server 并查询此服务器。 Here 是连接此服务器的教程。它不是 REST 服务,它只是 JDBC 服务器。您可以从 REST 服务连接到它(但不是以 REST 方式,仅用作数据源),将其用作数据源
- 提交作业到Livy 服务器 - 你的服务可能会调用 Livy 在 Spark 中运行一些作业
- 提交作业到Spark REST API - 你的服务可能会调用 Livy 在 Spark 中运行一些作业,但在这种情况下作业文件必须在集群的 JAR 文件中
第二个和第三个选项都需要准备好的工作代码。 不是 REST 服务,您可以通过查询/get/table/row=1 调用它,您必须准备自己的服务,该服务将通过适当的计算提交作业。
结论:
不,Spark 没有内置的 REST 服务来查询数据。但是,它有一些选项可以以 REST 样式运行预定义的作业和查询数据。但是,这需要构建您自己的服务。他们必须使用预定义的作业查询适当的 Spark API。
如果您只想运行 SQL 查询,请考虑使用 JDBC Spark Server 作为服务的数据源。