Spark streaming:批处理时间缓慢增加

Spark streaming : batch processing time slowly increase

我将 spark 与 cassandra spark 连接器一起使用,并直接使用 kafka。

而且我的种子批量处理随着时间的推移缓慢增加。 即使没有什么要处理来自 kafka 的传入。

我觉得按batch大概是几毫秒,但是时间长了,一个batch可能要多几秒,直到达到batch interval,最后crash。

我一开始以为是内存泄漏,但我认为处理时间不是线性的,而是呈指数增长的。

真不知道是stage越来越长还是潜伏期 增加的阶段之间。

我用的是spark 1.4.0

对此有任何指示吗?

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

而且看起来即使批处理时间增加,作业处理时间也没有增加。 示例:对于需要 7 秒的批处理,每个作业处理时间的总和为 1.5 秒。 (如下图所示)

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

如果是这样怎么改正?

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

我在向我的 rdd 添加过滤器和转换的函数中有这段代码。

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

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