我们有一个系统,其中包含一个计算报告的数据管道,以及一个可以进行临时查询的 UI 层,并在查询后对我们的数据集应用一些特定的计算。我正在考虑将现有的批处理数据处理层迁移到 Spark,但我对 UI 应用层不太确定。
棘手的部分是来自 UI 的请求还需要将某些功能应用于数据集。我还没有找到任何可以从查询结果中应用自定义函数的查询引擎,例如 Elasticsearch。所以我想知道让 UI 层直接触发 Spark 是否是个好主意,假设源数据已经缓存在 Spark session 中。
所以我的问题是:
- Spark 是实时交互式应用程序的正确解决方案吗?有哪些替代方案?
- 我想让 UI 应用程序在 Spark 集群之外运行。那么有什么框架可以用于外部服务来触发 Spark 作业吗?或者利用一些现有的 Spark session ?
如有任何建议,我们将不胜感激。
虽然这是一个基于观点的问题,但我想根据我的观察来回答。
Is Spark the right solution for real-time interactive applications?
What are the alternatives?
直接从内存中的 spark 表查询是个坏主意。如果有多个并发用户,您可能会遇到请求排队等问题。spark 关闭并且 UI 不可用。.spark 内存表基于 LRU 等从内存中逐出...
存储数据是适合您需要的持久存储。ES、hive、Cassandra、RDBMS 等。
如果在数据存储之上需要 SQL,请检查 PrestoSQL。
I would like to have the UI application runs outside of Spark cluster.
So is there any framework that I can use for external service to
trigger Spark job? Or leverage some existing Spark session?
我们使用 spark-job-server 将外部 UI 连接到现有的 spark 集群。您可以探索相同的或可能是 apache livy。