Spark Streaming - 刷新静态数据

Spark Streaming - Refresh Static Data

我有一个 Spark Streaming 作业,它在启动时查询 Hive 并创建一个 Map[Int, String] 对象,然后该对象用于作业执行的部分计算。

我遇到的问题是 Hive 中的数据每 2 小时就有可能发生变化。我希望能够按计划刷新静态数据,而不必每次都重新启动 Spark Job。

地图对象的初始加载大约需要 1 分钟。

非常欢迎任何帮助。

您可以使用侦听器。每次为 spark 上下文中的任何流启动作业时都会触发。由于您的数据库每两个小时更新一次,因此每次更新 AFAIK 都没有什么坏处。

sc.addSparkListener(new SparkListener() {
override def onSparkListenerJobStart(jobStart: SparkListenerJobStart) {
//load data that to the map that will be sent to executor
}


});