# PartitionStrategy

### Related Docs: trait PartitionStrategy | package graphx

#### object PartitionStrategy extends Serializable

Collection of built-in PartitionStrategy implementations.

Source
PartitionStrategy.scala
Linear Supertypes
Serializable, Serializable, AnyRef, Any
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. PartitionStrategy
2. Serializable
3. Serializable
4. AnyRef
5. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Value Members

1. #### final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any
2. #### final def ##(): Int

Definition Classes
AnyRef → Any
3. #### final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any
4. #### object CanonicalRandomVertexCut extends PartitionStrategy with Product with Serializable

Assigns edges to partitions by hashing the source and destination vertex IDs in a canonical direction, resulting in a random vertex cut that colocates all edges between two vertices, regardless of direction.

5. #### object EdgePartition1D extends PartitionStrategy with Product with Serializable

Assigns edges to partitions using only the source vertex ID, colocating edges with the same source.

6. #### object EdgePartition2D extends PartitionStrategy with Product with Serializable

Assigns edges to partitions using a 2D partitioning of the sparse edge adjacency matrix, guaranteeing a 2 * sqrt(numParts) bound on vertex replication.

Assigns edges to partitions using a 2D partitioning of the sparse edge adjacency matrix, guaranteeing a 2 * sqrt(numParts) bound on vertex replication.

Suppose we have a graph with 12 vertices that we want to partition over 9 machines. We can use the following sparse matrix representation:

__________________________________
v0   | P0 *     | P1       | P2    *  |
v1   |  ****    |  *       |          |
v2   |  ******* |      **  |  ****    |
v3   |  *****   |  *  *    |       *  |
----------------------------------
v4   | P3 *     | P4 ***   | P5 **  * |
v5   |  *  *    |  *       |          |
v6   |       *  |      **  |  ****    |
v7   |  * * *   |  *  *    |       *  |
----------------------------------
v8   | P6   *   | P7    *  | P8  *   *|
v9   |     *    |  *    *  |          |
v10  |       *  |      **  |  *  *    |
v11  | * <-E    |  ***     |       ** |
----------------------------------

The edge denoted by E connects v11 with v1 and is assigned to processor P6. To get the processor number we divide the matrix into sqrt(numParts) by sqrt(numParts) blocks. Notice that edges adjacent to v11 can only be in the first column of blocks (P0, P3, P6) or the last row of blocks (P6, P7, P8). As a consequence we can guarantee that v11 will need to be replicated to at most 2 * sqrt(numParts) machines.

Notice that P0 has many edges and as a consequence this partitioning would lead to poor work balance. To improve balance we first multiply each vertex id by a large prime to shuffle the vertex locations.

When the number of partitions requested is not a perfect square we use a slightly different method where the last column can have a different number of rows than the others while still maintaining the same size per block.

7. #### object RandomVertexCut extends PartitionStrategy with Product with Serializable

Assigns edges to partitions by hashing the source and destination vertex IDs, resulting in a random vertex cut that colocates all same-direction edges between two vertices.

8. #### final def asInstanceOf[T0]: T0

Definition Classes
Any
9. #### def clone(): AnyRef

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( ... )
10. #### final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef
11. #### def equals(arg0: Any): Boolean

Definition Classes
AnyRef → Any
12. #### def finalize(): Unit

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
13. #### def fromString(s: String): PartitionStrategy

Returns the PartitionStrategy with the specified name.

14. #### final def getClass(): Class[_]

Definition Classes
AnyRef → Any
15. #### def hashCode(): Int

Definition Classes
AnyRef → Any
16. #### final def isInstanceOf[T0]: Boolean

Definition Classes
Any
17. #### final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef
18. #### final def notify(): Unit

Definition Classes
AnyRef
19. #### final def notifyAll(): Unit

Definition Classes
AnyRef
20. #### final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef
21. #### def toString(): String

Definition Classes
AnyRef → Any
22. #### final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
23. #### final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
24. #### final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )