草庐IT

takeByKey

全部标签

scala - 有效地为 spark 实现 takeByKey

我有一个类型为RDD[(k:Int,v:String)]的RDD。我想为每个键k使用最多1000个元组,这样我就有了[(k,v)],其中没有键出现超过1000次。有没有一种方法可以避免先调用groupBy的性能损失?我想不出一种聚合值的好方法,以避免导致我的工作失败的完整groupBy。天真的方法:deftakeByKey(rdd:RDD[(K,V)],n:Int):RDD[(K,V)]={rdd.groupBy(_._1).mapValues(_.take(n)).flatMap(_._2)}我正在寻找一种更有效的方法来避免groupBy:takeByKey(rdd:RDD[(K,V