Spark Structured Streaming 如何处理背压?
How Spark Structured Streaming handles backpressure?
我正在分析 Spark Structured Streaming 的背压功能。有谁知道详情?是否可以通过代码调整处理传入记录?
谢谢
如果您的意思是动态更改结构化流中每个内部批处理的大小,那么否。 Structured Streaming 中没有基于接收器的源,因此完全没有必要。从另一个角度来看,Structured Streaming 不能做真正的背压,因为,比如,Spark 不能告诉其他应用放慢向 Kafka 推送数据的速度。
通常情况下,结构化流式处理会默认尝试尽可能快地处理数据。每个源中都有选项可以控制处理速率,例如 File 源中的 maxFilesPerTrigger
和 Kafka 源中的 maxOffsetsPerTrigger
。阅读以下链接了解更多详情:
http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#input-sources
http://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html
仅需要处理背压是基于推送的机制。 Kafka消费者是基于拉取的,只有当当前批次处理和保存完成后,spark才会拉取下一批记录。如果在 spark 中延迟处理和保存,它不会提取新的一批记录,因此不需要背压处理。
maxOffsetsPerTrigger can change the number of records processed per spark batch set, backpressure.enabled 改变接收速率,但这与你告诉源放慢速度的背压不同。
我正在分析 Spark Structured Streaming 的背压功能。有谁知道详情?是否可以通过代码调整处理传入记录? 谢谢
如果您的意思是动态更改结构化流中每个内部批处理的大小,那么否。 Structured Streaming 中没有基于接收器的源,因此完全没有必要。从另一个角度来看,Structured Streaming 不能做真正的背压,因为,比如,Spark 不能告诉其他应用放慢向 Kafka 推送数据的速度。
通常情况下,结构化流式处理会默认尝试尽可能快地处理数据。每个源中都有选项可以控制处理速率,例如 File 源中的 maxFilesPerTrigger
和 Kafka 源中的 maxOffsetsPerTrigger
。阅读以下链接了解更多详情:
http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#input-sources http://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html
仅需要处理背压是基于推送的机制。 Kafka消费者是基于拉取的,只有当当前批次处理和保存完成后,spark才会拉取下一批记录。如果在 spark 中延迟处理和保存,它不会提取新的一批记录,因此不需要背压处理。
maxOffsetsPerTrigger can change the number of records processed per spark batch set, backpressure.enabled 改变接收速率,但这与你告诉源放慢速度的背压不同。