apache-spark - Spark可以用于实时交互应用吗?
问题描述
我们有一个系统,其中包含一个计算报告的数据管道,以及一个可以进行即席查询的 UI 层,在查询后将一些特定的计算应用于我们的数据集。我正在考虑将现有的批处理数据处理层迁移到 Spark,但我对 UI 应用层不太确定。
棘手的部分是来自 UI 的请求还需要将某些功能应用于数据集。我还没有找到任何可以从查询结果中应用自定义函数的查询引擎,例如 Elasticsearch。所以我想知道让 UI 层直接触发 Spark 是否是个好主意,假设源数据已经缓存在 Spark 会话中。
所以我的问题是:
- Spark 是实时交互式应用程序的正确解决方案吗?有哪些替代方案?
- 我想让 UI 应用程序在 Spark 集群之外运行。那么是否有任何框架可以用于外部服务来触发 Spark 作业?或者利用一些现有的 Spark 会话?
任何建议将不胜感激。
解决方案
虽然这是基于意见的问题,但我想根据我的观察来回答。
Spark 是实时交互式应用程序的正确解决方案吗?有哪些替代方案?
直接从内存中的火花表查询将是一个坏主意。在多个并发用户的情况下,您可能会遇到请求排队等问题。火花下降并且 UI 不可用。火花内存表被从内存中逐出基于LRU等...
存储数据是适合您需要的持久存储。ES、hive、Cassandra、RDBMS 等。如果在数据存储之上需要 SQL,请检查 PrestoSQL。
我想让 UI 应用程序在 Spark 集群之外运行。那么是否有任何框架可以用于外部服务来触发 Spark 作业?或者利用一些现有的 Spark 会话?
我们有外部 UI 使用 spark-job-server 连接到现有的 spark 集群。你可以探索同样的,或者可能是 apache livy。
推荐阅读
- reactjs - React 应用程序“编译失败”,因为找不到“./node_modules/jss-default-unit/lib/index.js”
- python - 在python中将Html转换为原始文本
- python-3.x - 如何用逗号打印数字作为十万分隔符?
- sql - 使用 CASE WHEN 将语言代码整理成一个组合语言环境代码,并计算组合语言环境代码在某个日期出现的次数
- python - 按列对数据框进行分组并在另一个中连接字符串
- arduino - 如何使用 udp 指令在 arduino 以太网上设置 RGB LED?
- python - 为什么 readline() 不返回原始文本?
- indexing - 如果数组中的项目存在,则创建一个 couchdb 视图以进行索引
- python - Django:表单未显示
- android - 将 PagedListAdapter 与 LiveData 一起使用时如何显示空视图?