运行Spark Streaming作业,我不止一次遇到过以下行为。处理开始良好:每批处理时间远低于批处理间隔。然后突然,输入率下降到接近零。 See these graphs.
即使程序可以跟上并且它大大减慢了执行速度,也会发生这种情况。我相信当没有太多未处理的数据时会发生丢弃,但由于速率太低,这些最终记录占用了运行作业所需的大部分时间。有没有办法避免这种情况并加速?
我正在使用PySpark Spark 1.6.2
并使用直接方法进行Kafka 流式传输。 Backpressure
已启用,且maxRatePerPartition
为100。
答案 0 :(得分:0)
在旧的火花流版本中,设置背压更有意义,您需要接收器使用来自流的消息。从Spark 1.3开始,您可以使用无接收器的“直接”方法来确保更强大的端到端保证。所以你不需要担心背压,因为火花可以完成大部分微调。