我有一个 Spark Streaming 作业,它在启动时查询 Hive 并创建一个 Map[Int, String] 对象,然后该对象用于作业执行的部分计算。
我遇到的问题是 Hive 中的数据每 2 小时就有可能发生变化。我希望能够按计划刷新静态数据,而不必每次都重新启动 Spark 作业。
map 对象的初始加载大约需要 1 分钟。
非常欢迎任何帮助。
最佳答案
您可以使用监听器。每次为 spark 上下文中的任何流启 Action 业时都会触发。由于您的数据库每两个小时更新一次,因此每次更新 AFAIK 都没有什么坏处。
sc.addSparkListener(new SparkListener() {
override def onSparkListenerJobStart(jobStart: SparkListenerJobStart) {
//load data that to the map that will be sent to executor
}
});
关于scala - Spark Streaming - 刷新静态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54790472/