Skip to content
Snippets Groups Projects
Commit cb366774 authored by Reynold Xin's avatar Reynold Xin
Browse files

Merge pull request #738 from harsha2010/pruning

Fix bug in Partition Pruning.
parents f3cf0949 392d7474
No related branches found
No related tags found
No related merge requests found
...@@ -33,8 +33,9 @@ class PruneDependency[T](rdd: RDD[T], @transient partitionFilterFunc: Int => Boo ...@@ -33,8 +33,9 @@ class PruneDependency[T](rdd: RDD[T], @transient partitionFilterFunc: Int => Boo
extends NarrowDependency[T](rdd) { extends NarrowDependency[T](rdd) {
@transient @transient
val partitions: Array[Partition] = rdd.partitions.filter(s => partitionFilterFunc(s.index)) val partitions: Array[Partition] = rdd.partitions.zipWithIndex
.zipWithIndex.map { case(split, idx) => new PartitionPruningRDDPartition(idx, split) : Partition } .filter(s => partitionFilterFunc(s._2))
.map { case(split, idx) => new PartitionPruningRDDPartition(idx, split) : Partition }
override def getParents(partitionId: Int) = List(partitions(partitionId).index) override def getParents(partitionId: Int) = List(partitions(partitionId).index)
} }
......
package spark
import org.scalatest.FunSuite
import spark.SparkContext._
import spark.rdd.PartitionPruningRDD
class PartitionPruningRDDSuite extends FunSuite with SharedSparkContext {
test("Pruned Partitions inherit locality prefs correctly") {
class TestPartition(i: Int) extends Partition {
def index = i
}
val rdd = new RDD[Int](sc, Nil) {
override protected def getPartitions = {
Array[Partition](
new TestPartition(1),
new TestPartition(2),
new TestPartition(3))
}
def compute(split: Partition, context: TaskContext) = {Iterator()}
}
val prunedRDD = PartitionPruningRDD.create(rdd, {x => if (x==2) true else false})
val p = prunedRDD.partitions(0)
assert(p.index == 2)
assert(prunedRDD.partitions.length == 1)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment