Spark流式传输:批量处理时间慢慢增加

时间:2016-02-24 16:44:40

标签: apache-spark spark-streaming

我用cassandra火花连接器和直接kafka使用spark。

随着时间的推移,我逐渐增加批量游行。 即使没有任何东西可以处理来自kafka的传入。

我认为批量只有几毫秒,但经过很长一段时间,一批可能需要几秒钟才能达到批处理间隔并最终崩溃。

我首先想到的是内存泄漏,但我认为处理时间不那么线性,而是呈指数级。

我真的不知道这些阶段会变得越来越长或延迟 在阶段之间增加。

我使用spark 1.4.0

exemple

关于此的任何指示?

编辑: 仔细研究每批处理时间的演变,比较总作业处理时间。

似乎即使批处理时间增加,作业处理时间也不会增加。 例如:对于占用7s的批次,每个作业处理时间的总和为1.5s。 (如下图所示)

是因为计算时间驱动程序端增加了,而不是计算时间执行程序端? 这个驱动程序计算时间没有显示在作业处理中吗?

如果是这样的话怎么能纠正它?

Exemple that show the differences between job and batch processing time

1 个答案:

答案 0 :(得分:1)

我终于找到了解决问题的方法。

我在函数中添加了这个代码,用于添加过滤器并转换为我的rdd。

TypeConverter.registerConverter(new SomethingToOptionConverter[EventCC])
TypeConverter.registerConverter(new OptionToSomethingConverter[EventCC])

因为它在每个批次中调用,所以TypeConverter内的同一个对象有很多时间。 而且我真的不知道它是如何工作的Cassandra Spark转换器,但它看起来像是反射内部的白色物体。 并且进行慢速反射x时间批处理使批次的所有处理时间都增加。