我已经实现了Spark Streaming,它接收来自Kafka的数据。有一个RDD从数据库加载数据,以对来自流的传入数据执行操作。但是,我想定期刷新RDD以检索数据源(数据库)中的任何更改。有没有办法刷新/重新加载数据?
答案 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,并使用计时器定期更新广播。