异常大的反序列化时间

时间:2016-02-16 09:00:55

标签: apache-spark apache-spark-1.5

我在内存中缓存的rdd上执行mapPartitions,然后执行reduce。这是我的代码片段

// myRdd is an rdd consisting of Tuple2[Int,Long] 
myRdd.mapPartitions(rangify).reduce( (x,y) => (x._1+y._1,x._2 ++ y._2)) 

//The rangify function- For each partition, it's adding the first element of the tuples & constructing ranges from the second element of the tuples

def rangify(l: Iterator[ Tuple2[Int,Long] ]) : Iterator[ Tuple2[Long, List [ ArrayBuffer[ Tuple2[Long,Long] ] ] ] ]= { 
  var sum=0L 
  val mylist=ArrayBuffer[ Tuple2[Long,Long] ]() 

  if(l.isEmpty) 
    return List( (0L,List [ ArrayBuffer[ Tuple2[Long,Long] ] ] ())).toIterator 

  var prev= -1000L 
  var begin= -1000L 

  for (x <- l){ 
    sum+=x._1 

    if(prev<0){ 
      prev=x._2 
      begin=x._2 
    } 

    else if(x._2==prev+1) 
      prev=x._2 

    else { 
      mylist+=((begin,prev)) 
      prev=x._2 
      begin=x._2 
    } 
  } 

  mylist+= ((begin,prev)) 

  List((sum, List(mylist) ) ).toIterator 
} 

rdd缓存在内存中。我正在为每个执行者使用20个执行器和1个核心。缓存的rdd有60个街区。问题是每工作2-3次,有一项任务具有异常大的反序列化时间。附上截图

enter image description here

这些是任务4的指标。任务4是表格的底行 enter image description here

这种行为可能是什么原因?

PS - 1.在所有情况下我都没有这种行为。我做了很多同样的工作和我在大约40%的案例中得到这种行为

运行的Spark日志 - http://pastebin.com/jnqTzPXS

0 个答案:

没有答案