火花流中批处理时间与提交时间之间相差50分钟

时间:2019-07-19 08:54:13

标签: apache-spark apache-kafka spark-streaming

火花版本是2.2.0 伪代码:

在5分钟的窗口中从kafka读取data1

从kafka读取data2,其窗口为10分钟,幻灯片持续时间为5分钟

data1在某些情况下加入data2

做一些agg并写到mysql

问题:  批处理时间为15:00,但提交时间为15:50,处理时间少于1分钟。发生什么事了?

val shareDs = KafkaUtils.createDirectStream[String, String](streamContext, LocationStrategies.PreferBrokers, shareReqConsumer)

val shareResDS = KafkaUtils.createDirectStream[String, String](streamContext, LocationStrategies.PreferBrokers, shareResConsumer).window(Minutes(WindowTime), Minutes(StreamTime))

shareDs doSomeMap join (shareResDs doSomeMap) forEachRddd{do some things then write to mysql}

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 在kafka中使用spark-Streaming,使用单独的group_id配置每个流,并禁用自动提交, 配置适当的kafka参数。尤其是心跳,会话超时,请求超时,最大轮询间隔。