在 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

IDEA Spark Streaming 操作(RDD队列流)

spark版本定制十八:Spark Streaming中空RDD处理及流处理程序优雅的停止