【发布时间】:2016-01-25 15:18:08
【问题描述】:
我们现有的应用程序在启动时将大约一千万行从数据库加载到对象集合中。该集合存储在 GigaSpaces 缓存中。
当应用程序接收到新消息时,会检查缓存以查看该消息的条目是否已存在。如果不是,则根据消息中的数据将新实体添加到缓存中。 (同时,新实体被持久化到数据库中)。
我们正在研究使用 Spark 和 Scala 重新构建应用程序的可行性和附加值。问题是,在 Spark 中建模的正确方法是什么。
我的第一个想法是从数据库加载到 Spark RDD。查找现有条目显然很简单。但是,由于 RDD 是不可变的,因此向缓存中添加新条目需要进行转换。鉴于大量数据,我的假设是这不会很好。
另一个想法是将缓存创建为可变的 Scala 集合。但是,鉴于 Spark 与 RDD 一起工作,我们如何将其与 Spark 集成?
谢谢
【问题讨论】:
-
“我的第一个想法是从数据库加载到 Spark RDD。查找现有条目显然很简单”。呃,不,不会的,你想用什么操作来查找条目是否存在?它可能需要查看每个节点......对我来说,Spark 和 RDD 似乎非常不适合您的用例 - SPark 是关于指定如何将大型数据集中的数据转换为 RDD,然后定义一个集合该 RDD 上的转换,目的是产生一些(可能仍然很大)结果集。对于大型数据集的所有用例来说,这并不是灵丹妙药。
标签: scala apache-spark