返回信息流工作中遇到一个场景:
程序功能是需要实时监测mysql是否有新任务,有新任务的话,取出新任务,请求出相关的数据,利用Spark进行分析,并将分析结果写入到mysql表中。
要求需要实时响应新任务,有新任务需要立即分析出结果。
我现在做法是写了一个Spark程序,程序不停的每隔1分钟监测是否有新任务,有的话Spark分析,这样的话Spark程序就是一直运行 一直占用资源的
有没有什么办法可以将监测新任务的程序和Spark处理程序分开,这样只会在有新任务的时候Spark程序才会启动,不用一直启动。谢过各位大神了。
这是一条镜像帖。来源:北邮人论坛 / java / #61987同步于 2019/4/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【请教】Spark的一个问题
qmh2014
2019/4/30镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
我觉得取决于你的mysql job频率,以及spark集群架构
job频率至少每1分钟1次 -> 老老实实一直跑着spark吧,spark job分配资源的速度都不一定赶得上trigger的频率呢
job频率很小 -> 用AWS lambda/单独的VM/container/k8s pod来检查mysql里的新任务,有新job就submit spark job。如果spark job能多个并行更好,不能的话就把检测结果写到某个queue里(AWS SQS/Kafka/RabbitMQ),起一个spark job从queue里拿job