使用updateStateByKey时,为什么任务大小会不断增长?

时间:2014-11-01 23:10:41

标签: scala memory-leaks apache-spark spark-streaming

我编写了一个与updateStateByKey一起使用的简单函数,以便查看问题是否是因为我的updateFunc。我认为这一定是由于其他原因造成的。我在--master local [4]上运行它。

val updateFunc = (values: Seq[Int], state: Option[Int]) => {
  Some(1)
}

val state = test.updateStateByKey[Int](updateFunc)

过了一会儿,有警告,任务规模不断增加。

WARN TaskSetManager:阶段x包含一个非常大的任务(129 KB)。建议的最大任务大小为100 KB。

WARN TaskSetManager:阶段x包含一个非常大的任务(131 KB)。建议的最大任务大小为100 KB。

1 个答案:

答案 0 :(得分:0)

您的广告系列中有越来越多的不同密钥,每个密钥都会导致1的新副本添加到您的州。

当前updateStateByKey扫描每个批处理间隔中的每个键,即使该键没有数据也是如此。这导致updateStateByKey的批处理时间随着状态键的数量而增加,即使数据速率保持不变

proposal to solve this