scala - Spark Streaming - 刷新静态数据

标签 scala apache-spark hadoop hive spark-streaming

我有一个 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/

相关文章:

java - 为什么 Cassandra 客户端在生产中没有 epoll 会失败?

用于 Play 的 Json "Validate"

sbt - IOException : Cannot run program "javac" when "sudo ./sbt/sbt compile" in Spark?

java - Maven - 如何在两个相互依赖的项目中使用不同的版本依赖关系

hadoop - CqlInputFormat中的Hadoop Cassandra宽行

hadoop - 如果输入数据源在 HDFS 中不断增加,MapReduce 作业会发生什么情况?

rest - Apache Atlas 休息 API

Windows PATH 变量是否以管理员身份运行 CMD 是不同的

Scala 编译器说我的方法是递归的,以防使用隐式和匿名类

python - 教程中出现多个 SparkContexts 错误