在Spark Streaming中刷新RDD

时间:2018-06-05 06:29:15

标签: apache-spark spark-streaming

我已经实现了Spark Streaming,它接收来自Kafka的数据。有一个RDD从数据库加载数据,以对来自流的传入数据执行操作。但是,我想定期刷新RDD以检索数据源(数据库)中的任何更改。有没有办法刷新/重新加载数据?

2 个答案:

答案 0 :(得分:2)

如果在变换中执行数据库读取,还可以将时间作为参数传递:

.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 
  }

}

答案 1 :(得分:0)

您可以广播rdd,并使用计时器定期更新广播。