火花版本是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}
答案 0 :(得分:0)
我解决了这个问题。 在kafka中使用spark-Streaming,使用单独的group_id配置每个流,并禁用自动提交, 配置适当的kafka参数。尤其是心跳,会话超时,请求超时,最大轮询间隔。