public class GraphOps<VD,ED>
extends Object
implements scala.Serializable
Graph
. All operations are expressed in terms of the
efficient GraphX API. This class is implicitly constructed for each Graph object.
Constructor and Description |
---|
GraphOps(Graph<VD,ED> graph,
scala.reflect.ClassTag<VD> evidence$1,
scala.reflect.ClassTag<ED> evidence$2) |
Modifier and Type | Method and Description |
---|---|
VertexRDD<Edge<ED>[]> |
collectEdges(EdgeDirection edgeDirection)
Returns an RDD that contains for each vertex v its local edges,
i.e., the edges that are incident on v, in the user-specified direction.
|
VertexRDD<long[]> |
collectNeighborIds(EdgeDirection edgeDirection)
Collect the neighbor vertex ids for each vertex.
|
VertexRDD<scala.Tuple2<Object,VD>[]> |
collectNeighbors(EdgeDirection edgeDirection)
Collect the neighbor vertex attributes for each vertex.
|
Graph<Object,ED> |
connectedComponents()
Compute the connected component membership of each vertex and return a graph with the vertex
value containing the lowest vertex id in the connected component containing that vertex.
|
Graph<Object,ED> |
connectedComponents(int maxIterations)
Compute the connected component membership of each vertex and return a graph with the vertex
value containing the lowest vertex id in the connected component containing that vertex.
|
Graph<VD,ED> |
convertToCanonicalEdges(scala.Function2<ED,ED,ED> mergeFunc)
Convert bi-directional edges into uni-directional ones.
|
VertexRDD<Object> |
degrees()
The degree of each vertex in the graph.
|
<VD2,ED2> Graph<VD,ED> |
filter(scala.Function1<Graph<VD,ED>,Graph<VD2,ED2>> preprocess,
scala.Function1<EdgeTriplet<VD2,ED2>,Object> epred,
scala.Function2<Object,VD2,Object> vpred,
scala.reflect.ClassTag<VD2> evidence$4,
scala.reflect.ClassTag<ED2> evidence$5)
Filter the graph by computing some values to filter on, and applying the predicates.
|
VertexRDD<Object> |
inDegrees()
The in-degree of each vertex in the graph.
|
<U> Graph<VD,ED> |
joinVertices(RDD<scala.Tuple2<Object,U>> table,
scala.Function3<Object,VD,U,VD> mapFunc,
scala.reflect.ClassTag<U> evidence$3)
Join the vertices with an RDD and then apply a function from the
vertex and RDD entry to a new vertex value.
|
long |
numEdges()
The number of edges in the graph.
|
long |
numVertices()
The number of vertices in the graph.
|
VertexRDD<Object> |
outDegrees()
The out-degree of each vertex in the graph.
|
Graph<Object,Object> |
pageRank(double tol,
double resetProb)
Run a dynamic version of PageRank returning a graph with vertex attributes containing the
PageRank and edge attributes containing the normalized edge weight.
|
Graph<Object,Object> |
personalizedPageRank(long src,
double tol,
double resetProb)
Run personalized PageRank for a given vertex, such that all random walks
are started relative to the source node.
|
long |
pickRandomVertex()
Picks a random vertex from the graph and returns its ID.
|
<A> Graph<VD,ED> |
pregel(A initialMsg,
int maxIterations,
EdgeDirection activeDirection,
scala.Function3<Object,VD,A,VD> vprog,
scala.Function1<EdgeTriplet<VD,ED>,scala.collection.Iterator<scala.Tuple2<Object,A>>> sendMsg,
scala.Function2<A,A,A> mergeMsg,
scala.reflect.ClassTag<A> evidence$6)
Execute a Pregel-like iterative vertex-parallel abstraction.
|
Graph<VD,ED> |
removeSelfEdges()
Remove self edges.
|
Graph<Object,Object> |
staticPageRank(int numIter,
double resetProb)
Run PageRank for a fixed number of iterations returning a graph with vertex attributes
containing the PageRank and edge attributes the normalized edge weight.
|
Graph<Vector,Object> |
staticParallelPersonalizedPageRank(long[] sources,
int numIter,
double resetProb)
Run parallel personalized PageRank for a given array of source vertices, such
that all random walks are started relative to the source vertices
|
Graph<Object,Object> |
staticPersonalizedPageRank(long src,
int numIter,
double resetProb)
Run Personalized PageRank for a fixed number of iterations with
with all iterations originating at the source node
returning a graph with vertex attributes
containing the PageRank and edge attributes the normalized edge weight.
|
Graph<Object,ED> |
stronglyConnectedComponents(int numIter)
Compute the strongly connected component (SCC) of each vertex and return a graph with the
vertex value containing the lowest vertex id in the SCC containing that vertex.
|
Graph<Object,ED> |
triangleCount()
Compute the number of triangles passing through each vertex.
|
public long numEdges()
public long numVertices()
public VertexRDD<Object> inDegrees()
public VertexRDD<Object> outDegrees()
public VertexRDD<Object> degrees()
public VertexRDD<long[]> collectNeighborIds(EdgeDirection edgeDirection)
edgeDirection
- the direction along which to collect
neighboring vertices
public VertexRDD<scala.Tuple2<Object,VD>[]> collectNeighbors(EdgeDirection edgeDirection)
edgeDirection
- the direction along which to collect
neighboring vertices
public VertexRDD<Edge<ED>[]> collectEdges(EdgeDirection edgeDirection)
edgeDirection
- the direction along which to collect
the local edges of vertices
public Graph<VD,ED> removeSelfEdges()
public <U> Graph<VD,ED> joinVertices(RDD<scala.Tuple2<Object,U>> table, scala.Function3<Object,VD,U,VD> mapFunc, scala.reflect.ClassTag<U> evidence$3)
table
- the table to join with the vertices in the graph.
The table should contain at most one entry for each vertex.mapFunc
- the function used to compute the new vertex
values. The map function is invoked only for vertices with a
corresponding entry in the table otherwise the old vertex value
is used.
evidence$3
- (undocumented)
val rawGraph: Graph[Int, Int] = GraphLoader.edgeListFile(sc, "webgraph")
.mapVertices((_, _) => 0)
val outDeg = rawGraph.outDegrees
val graph = rawGraph.joinVertices[Int](outDeg)
((_, _, outDeg) => outDeg)
public <VD2,ED2> Graph<VD,ED> filter(scala.Function1<Graph<VD,ED>,Graph<VD2,ED2>> preprocess, scala.Function1<EdgeTriplet<VD2,ED2>,Object> epred, scala.Function2<Object,VD2,Object> vpred, scala.reflect.ClassTag<VD2> evidence$4, scala.reflect.ClassTag<ED2> evidence$5)
preprocess
- a function to compute new vertex and edge data before filteringepred
- edge pred to filter on after preprocess, see more details under
Graph.subgraph(scala.Function1<org.apache.spark.graphx.EdgeTriplet<VD, ED>, java.lang.Object>, scala.Function2<java.lang.Object, VD, java.lang.Object>)
vpred
- vertex pred to filter on after preprocess, see more details under
Graph.subgraph(scala.Function1<org.apache.spark.graphx.EdgeTriplet<VD, ED>, java.lang.Object>, scala.Function2<java.lang.Object, VD, java.lang.Object>)
evidence$4
- (undocumented)evidence$5
- (undocumented)
graph.filter(
graph => {
val degrees: VertexRDD[Int] = graph.outDegrees
graph.outerJoinVertices(degrees) {(vid, data, deg) => deg.getOrElse(0)}
},
vpred = (vid: VertexId, deg:Int) => deg > 0
)
public long pickRandomVertex()
public Graph<VD,ED> convertToCanonicalEdges(scala.Function2<ED,ED,ED> mergeFunc)
mergeFunc
- the user defined reduce function which should
be commutative and associative and is used to combine the output
of the map phase
public <A> Graph<VD,ED> pregel(A initialMsg, int maxIterations, EdgeDirection activeDirection, scala.Function3<Object,VD,A,VD> vprog, scala.Function1<EdgeTriplet<VD,ED>,scala.collection.Iterator<scala.Tuple2<Object,A>>> sendMsg, scala.Function2<A,A,A> mergeMsg, scala.reflect.ClassTag<A> evidence$6)
vprog
is executed in parallel on
each vertex receiving any inbound messages and computing a new
value for the vertex. The sendMsg
function is then invoked on
all out-edges and is used to compute an optional message to the
destination vertex. The mergeMsg
function is a commutative
associative function used to combine messages destined to the
same vertex.
On the first iteration all vertices receive the initialMsg
and
on subsequent iterations if a vertex does not receive a message
then the vertex-program is not invoked.
This function iterates until there are no remaining messages, or
for maxIterations
iterations.
initialMsg
- the message each vertex will receive at the on
the first iteration
maxIterations
- the maximum number of iterations to run for
activeDirection
- the direction of edges incident to a vertex that received a message in
the previous round on which to run sendMsg
. For example, if this is EdgeDirection.Out
, only
out-edges of vertices that received a message in the previous round will run.
vprog
- the user-defined vertex program which runs on each
vertex and receives the inbound message and computes a new vertex
value. On the first iteration the vertex program is invoked on
all vertices and is passed the default message. On subsequent
iterations the vertex program is only invoked on those vertices
that receive messages.
sendMsg
- a user supplied function that is applied to out
edges of vertices that received messages in the current
iteration
mergeMsg
- a user supplied function that takes two incoming
messages of type A and merges them into a single message of type
A. ''This function must be commutative and associative and
ideally the size of A should not increase.''
evidence$6
- (undocumented)public Graph<Object,Object> pageRank(double tol, double resetProb)
tol
- (undocumented)resetProb
- (undocumented)PageRank$.runUntilConvergence(org.apache.spark.graphx.Graph<VD, ED>, double, double, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)
public Graph<Object,Object> personalizedPageRank(long src, double tol, double resetProb)
src
- (undocumented)tol
- (undocumented)resetProb
- (undocumented)PageRank$.runUntilConvergenceWithOptions(org.apache.spark.graphx.Graph<VD, ED>, double, double, scala.Option<java.lang.Object>, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)
public Graph<Vector,Object> staticParallelPersonalizedPageRank(long[] sources, int numIter, double resetProb)
sources
- (undocumented)numIter
- (undocumented)resetProb
- (undocumented)public Graph<Object,Object> staticPersonalizedPageRank(long src, int numIter, double resetProb)
src
- (undocumented)numIter
- (undocumented)resetProb
- (undocumented)PageRank$.runWithOptions(org.apache.spark.graphx.Graph<VD, ED>, int, double, scala.Option<java.lang.Object>, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)
public Graph<Object,Object> staticPageRank(int numIter, double resetProb)
numIter
- (undocumented)resetProb
- (undocumented)PageRank$.run(org.apache.spark.graphx.Graph<VD, ED>, int, double, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)
public Graph<Object,ED> connectedComponents()
ConnectedComponents$.run(org.apache.spark.graphx.Graph<VD, ED>, int, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)
public Graph<Object,ED> connectedComponents(int maxIterations)
maxIterations
- (undocumented)ConnectedComponents$.run(org.apache.spark.graphx.Graph<VD, ED>, int, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)
public Graph<Object,ED> triangleCount()
TriangleCount$.run(org.apache.spark.graphx.Graph<VD, ED>, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)
public Graph<Object,ED> stronglyConnectedComponents(int numIter)
numIter
- (undocumented)StronglyConnectedComponents$.run(org.apache.spark.graphx.Graph<VD, ED>, int, scala.reflect.ClassTag<VD>, scala.reflect.ClassTag<ED>)