Spark Structured Streaming如何处理背压?

时间:2017-07-02 14:04:56

标签: apache-spark spark-structured-streaming backpressure

我正在分析Spark Structured Streaming的背压功能。有谁知道细节?是否可以通过代码调整进程传入记录? 感谢

2 个答案:

答案 0 :(得分:7)

如果您的意思是动态更改结构化流中每个内部批次的大小,则。结构化流中没有基于接收者的源,因此完全没有必要。从另一个角度来看,Structured Streaming无法做到真正的背压,因为,例如,Spark无法告诉其他应用程序减慢将数据推入Kafka的速度。

通常,Structured Streaming会默认尝试尽快处理数据。每个源中都有一些选项可用于控制处理速率,例如文件源中的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

答案 1 :(得分:1)

仅基于推动的机制才需要处理背压。 Kafka使用者基于拉动,仅当当前批次完成处理和保存后,spark才会拉动下一批记录。如果处理和保存工作因火花而延迟,它将不会提取新的记录,因此不需要背压处理。如果您不希望减少每个火花批处理的记录数,请设置maxOffsetsPerTrigger,但这与背压不同。