在 Spark Streaming 中刷新 RDD
Posted
技术标签:
【中文标题】在 Spark Streaming 中刷新 RDD【英文标题】:Refreshing RDD in Spark Streaming 【发布时间】:2018-06-05 06:29:14 【问题描述】:我已经实现了从 Kafka 接收数据的 Spark Streaming。有一个 RDD 从数据库加载数据以对来自流的传入数据执行操作。但是,我想定期刷新 RDD 以检索数据源(数据库)中的任何更改。有没有办法刷新/重新加载数据?
【问题讨论】:
【参考方案1】:如果您在转换中执行数据库的读取,您还可以将时间作为参数传递:
.transform((rdd, time) => refreshDbTable(rdd, time))
那么如果你想每 15 分钟刷新一次;
def refreshDbTable(rdd: RDD, time: Time) =
if (time.isMultipleOf(Minutes(15)))
// drop the temp table
// re-register the temp table
【讨论】:
【参考方案2】:您可以广播rdd,并使用计时器定期更新广播。
【讨论】:
以上是关于在 Spark Streaming 中刷新 RDD的主要内容,如果未能解决你的问题,请参考以下文章
Spark版本定制八:Spark Streaming源码解读之RDD生成全生命周期彻底研究和思考
Spark发行笔记8:解读Spark Streaming RDD的全生命周期
Spark 定制版:008~Spark Streaming源码解读之RDD生成全生命周期彻底研究和思考
如何在 Spark Streaming 中将 RDD 转换为 DataFrame,而不仅仅是 Spark