【发布时间】:2016-11-07 09:26:40
【问题描述】:
我正在使用 Spark 和 Spark-Cassandra 连接器从 Cassandra 聚合我的数据。我有一个带有单个共享 SparkContext 和 REST api 的 Web 应用程序。处理有下一个流程:
- 读取 Cassandra 表
- 准备过滤(Spark 转换序列)
- 根据api调用参数过滤准备好的RDD
在上述算法中,每个调用只有第三步不同(取决于 api 请求参数)。 Api 请求以并行模式执行(每个请求线程)。由于表中的数据不是很动态,并且我的 spark 工作人员有足够的内存来存储整个表,所以我想在第二步之后持久化我的 RDD,并且在每个请求上只过滤已经持久化的 RDD。我也想定期更新这个 RDD。实现它的最佳方法是什么?
【问题讨论】:
-
我不确定我是否正确理解您想要的内容。您的 RDD 是否需要在不同的上下文之间共享?否则,一个简单的
persist应该可以解决问题。 -
@Hawknight 不,我只有一个上下文。我可以将我的持久表存储在 scala 对象中吗?
-
好吧,如果你的表被转换为 RDD,你可以简单地持久化你的 RDD 并为你的后续调用保留对持久化 RDD 的引用(技术上只在调用操作时持久化)变量。
标签: apache-spark cassandra spark-cassandra-connector