对于每个spark.streaming.blockInterval(例如1分钟),接收者将监听流源以获取数据。假设当前的微型批处理花费了不自然的长时间(故意这样做,例如20分钟)。在此微批量处理期间,接收方是否仍会收听流媒体源并将其存储在Spark内存中?
当前管道通过使用Spark结构化流在Azure Databricks中运行。谁能帮我理解这一点!
在上述情况下,Spark将继续使用/提取来自Kafka的数据,并且微型批次将继续堆积,并最终导致内存不足(OOM)问题。为了避免出现这种情况,请启用背压设置,
spark.streaming.backpressure.enabled = true
https://spark.apache.org/docs/latest/streaming-programming-guide.html
有关Spark背压功能的更多详细信息