Spark Streaming文档Setting the Right Batch Interval建议最佳批处理间隔作为反复试验。即“将其设置得足够大,并逐渐减小直到它足够”。当批处理间隔略大于批处理时间时,避免积累延迟。
但是,Spark Streaming框架按固定的时间间隔计划批处理的原因是什么?例如,Spark Streaming GUI以3分钟的批处理间隔显示完成的批处理:
我们假设配置错误,上面的作业以 10分钟(而不是3)的批处理间隔重新配置。然后每10分钟(17:00、17:10、17:20等)安排批次。而处理时间大约接近3分钟。这是否意味着执行者将在闲置7分钟后不做任何事,直到批处理间隔时间过去了?而且每批都这样,这意味着2/3的分配资源被浪费在这项工作上。
问题1 :在分配的时间之前完成处理后,Spark可以立即处理下一批吗?
问题2 :请注意,批处理时间很好地舍入为hh:00,并以批处理间隔的倍数递增。例如,如果批处理间隔为5分钟。批处理时间将被设置为h:00,h:05,h:10等。这种舍入的合理性是什么?