Skip to content

Commit d681f45

Browse files
committed
Define getPartitions and compute in abstract class for MIMA
1 parent 1472390 commit d681f45

File tree

4 files changed

+25
-22
lines changed

4 files changed

+25
-22
lines changed

graphx/src/main/scala/org/apache/spark/graphx/EdgeRDD.scala

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ package org.apache.spark.graphx
2020
import scala.reflect.ClassTag
2121

2222
import org.apache.spark.Dependency
23+
import org.apache.spark.Partition
2324
import org.apache.spark.SparkContext
25+
import org.apache.spark.TaskContext
2426
import org.apache.spark.rdd.RDD
2527
import org.apache.spark.storage.StorageLevel
2628

@@ -37,6 +39,20 @@ import org.apache.spark.graphx.impl.EdgeRDDImpl
3739
abstract class EdgeRDD[ED, VD](
3840
@transient sc: SparkContext,
3941
@transient deps: Seq[Dependency[_]]) extends RDD[Edge[ED]](sc, deps) {
42+
43+
private[graphx] def partitionsRDD: RDD[(PartitionID, EdgePartition[ED, VD])]
44+
45+
override protected def getPartitions: Array[Partition] = partitionsRDD.partitions
46+
47+
override def compute(part: Partition, context: TaskContext): Iterator[Edge[ED]] = {
48+
val p = firstParent[(PartitionID, EdgePartition[ED, VD])].iterator(part, context)
49+
if (p.hasNext) {
50+
p.next._2.iterator.map(_.copy())
51+
} else {
52+
Iterator.empty
53+
}
54+
}
55+
4056
/**
4157
* Map the values in an edge partitioning preserving the structure but changing the values.
4258
*
@@ -71,8 +87,6 @@ abstract class EdgeRDD[ED, VD](
7187
(other: EdgeRDD[ED2, _])
7288
(f: (VertexId, VertexId, ED, ED2) => ED3): EdgeRDD[ED3, VD]
7389

74-
private[graphx] def partitionsRDD: RDD[(PartitionID, EdgePartition[ED, VD])]
75-
7690
private[graphx] def mapEdgePartitions[ED2: ClassTag, VD2: ClassTag](
7791
f: (PartitionID, EdgePartition[ED, VD]) => EdgePartition[ED2, VD2]): EdgeRDD[ED2, VD2]
7892

graphx/src/main/scala/org/apache/spark/graphx/VertexRDD.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ abstract class VertexRDD[VD](
6262

6363
private[graphx] def partitionsRDD: RDD[ShippableVertexPartition[VD]]
6464

65+
override protected def getPartitions: Array[Partition] = partitionsRDD.partitions
66+
67+
/**
68+
* Provides the `RDD[(VertexId, VD)]` equivalent output.
69+
*/
70+
override def compute(part: Partition, context: TaskContext): Iterator[(VertexId, VD)] = {
71+
firstParent[ShippableVertexPartition[VD]].iterator(part, context).next.iterator
72+
}
73+
6574
/**
6675
* Construct a new VertexRDD that is indexed by only the visible vertices. The resulting
6776
* VertexRDD will be based on a different index and can no longer be quickly joined with this

graphx/src/main/scala/org/apache/spark/graphx/impl/EdgeRDDImpl.scala

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ class EdgeRDDImpl[ED: ClassTag, VD: ClassTag] private[graphx] (
4040
}
4141
setName("EdgeRDD")
4242

43-
override protected def getPartitions: Array[Partition] = partitionsRDD.partitions
44-
4543
/**
4644
* If `partitionsRDD` already has a partitioner, use it. Otherwise assume that the
4745
* [[PartitionID]]s in `partitionsRDD` correspond to the actual partitions and create a new
@@ -50,15 +48,6 @@ class EdgeRDDImpl[ED: ClassTag, VD: ClassTag] private[graphx] (
5048
override val partitioner =
5149
partitionsRDD.partitioner.orElse(Some(Partitioner.defaultPartitioner(partitionsRDD)))
5250

53-
override def compute(part: Partition, context: TaskContext): Iterator[Edge[ED]] = {
54-
val p = firstParent[(PartitionID, EdgePartition[ED, VD])].iterator(part, context)
55-
if (p.hasNext) {
56-
p.next._2.iterator.map(_.copy())
57-
} else {
58-
Iterator.empty
59-
}
60-
}
61-
6251
override def collect(): Array[Edge[ED]] = this.map(_.copy()).collect()
6352

6453
/**

graphx/src/main/scala/org/apache/spark/graphx/impl/VertexRDDImpl.scala

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ class VertexRDDImpl[VD] private[graphx] (
3838

3939
override val partitioner = partitionsRDD.partitioner
4040

41-
override protected def getPartitions: Array[Partition] = partitionsRDD.partitions
42-
4341
override protected def getPreferredLocations(s: Partition): Seq[String] =
4442
partitionsRDD.preferredLocations(s)
4543

@@ -78,13 +76,6 @@ class VertexRDDImpl[VD] private[graphx] (
7876
partitionsRDD.map(_.size).reduce(_ + _)
7977
}
8078

81-
/**
82-
* Provides the `RDD[(VertexId, VD)]` equivalent output.
83-
*/
84-
override def compute(part: Partition, context: TaskContext): Iterator[(VertexId, VD)] = {
85-
firstParent[ShippableVertexPartition[VD]].iterator(part, context).next.iterator
86-
}
87-
8879
override private[graphx] def mapVertexPartitions[VD2: ClassTag](
8980
f: ShippableVertexPartition[VD] => ShippableVertexPartition[VD2])
9081
: VertexRDD[VD2] = {

0 commit comments

Comments
 (0)