当前位置:   article > 正文

spark streaming任务触发执行时间_spark任务还可以用sparkstreamingcontext来设置,spark任务执行时间间隔,

spark任务还可以用sparkstreamingcontext来设置,spark任务执行时间间隔,来

相信有不少小伙伴在使用spark streaming做微批次处理的时候有过疑问,就是我设置了Duration然后启动任务,那么我的批次任务每次会在啥时候启动呢?相信对于Duration设置比较小的同学来说并不会关心在什么时候执行,但是对于Duration设置比较大或者对数据延时、资源敏感的同学来说,可能就需要知道我的任务到底会在什么时候出发执行,话不多说,我们直接看源码
进入GitHub找到spark源码,链接spark streaming任务调度时间

private[streaming]
object Interval {
  def currentInterval(duration: Duration): Interval = {
    val time = new Time(System.currentTimeMillis)
    val intervalBegin = time.floor(duration)
    new Interval(intervalBegin, intervalBegin + duration)
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  def floor(that: Duration): Time = {
    val t = that.milliseconds
    new Time((this.millis / t) * t)
  }

  def floor(that: Duration, zeroTime: Time): Time = {
    val t = that.milliseconds
    new Time(((this.millis - zeroTime.milliseconds) / t) * t + zeroTime.milliseconds)
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

通过上面两段scala代码可以看到,每个批次的开始时间是拿当前时间戳除以代码设置的Duration取整得到,也就是说,设置5分钟Duration,那么触发时间就会在05分、10分、15分、20分…这样,想要调整触发时间可以调用第二个函数设置zeroTime实现。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/975661
推荐阅读
相关标签
  

闽ICP备14008679号