[ 
https://issues.apache.org/jira/browse/SPARK-7894?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andy Huang updated SPARK-7894:
------------------------------
    Description: 
This operator aims to union two graphs and generate a new graph directly. 
Vertexes and edges which are included in either graph will be part of the new 
graph.

The union of two graphs G(VG, EG) and H(VH, EH) is the union of their vertex 
sets and their edge families, which means G ∪ H = (VG ∪ VH, EG ∪ EH).

The below image shows a union of graph G and graph H.


A Simple interface would be:

bq. def union[VD: ClassTag, ED: ClassTag](other: Graph[VD, ED]): Graph[VD, ED]


However, inevitably vertexes and edges overlapping will happen between borders 
of graphs. It is necessary for interface to consider how to handle this case 
for both Vertex and Edge. 

For vertex, it's quite nature to have a union and remove duplicates vertexes. 
But for edges, a mergeEdges function seems to be more reasonable.

bq. def union[VD: ClassTag, ED: ClassTag](other: Graph[VD, ED], mergeEdges: 
(ED, ED) => ED): Graph[VD, ED]


  was:
This operator aims to union two graphs and generate a new graph directly. 
Vertexes and edges which are included in either graph will be part of the new 
graph.

The union of two graphs G(VG, EG) and H(VH, EH) is the union of their vertex 
sets and their edge families, which means G ∪ H = (VG ∪ VH, EG ∪ EH).

The below image shows a union of graph G and graph H.


A Simple interface would be:

        def union[VD: ClassTag, ED: ClassTag](other: Graph[VD, ED]): Graph[VD, 
ED]


However, inevitably vertexes and edges overlapping will happen between borders 
of graphs. It is necessary for interface to consider how to handle this case 
for both Vertex and Edge. 

For vertex, it's quite nature to have a union and remove duplicates vertexes. 
But for edges, a mergeEdges function seems to be more reasonable.

        def union[VD: ClassTag, ED: ClassTag](other: Graph[VD, ED], mergeEdges: 
(ED, ED) => ED): Graph[VD, ED]



> Graph Union Operator
> --------------------
>
>                 Key: SPARK-7894
>                 URL: https://issues.apache.org/jira/browse/SPARK-7894
>             Project: Spark
>          Issue Type: Improvement
>          Components: GraphX
>            Reporter: Andy Huang
>
> This operator aims to union two graphs and generate a new graph directly. 
> Vertexes and edges which are included in either graph will be part of the new 
> graph.
> The union of two graphs G(VG, EG) and H(VH, EH) is the union of their vertex 
> sets and their edge families, which means G ∪ H = (VG ∪ VH, EG ∪ EH).
> The below image shows a union of graph G and graph H.
> A Simple interface would be:
> bq. def union[VD: ClassTag, ED: ClassTag](other: Graph[VD, ED]): Graph[VD, ED]
> However, inevitably vertexes and edges overlapping will happen between 
> borders of graphs. It is necessary for interface to consider how to handle 
> this case for both Vertex and Edge. 
> For vertex, it's quite nature to have a union and remove duplicates vertexes. 
> But for edges, a mergeEdges function seems to be more reasonable.
> bq. def union[VD: ClassTag, ED: ClassTag](other: Graph[VD, ED], mergeEdges: 
> (ED, ED) => ED): Graph[VD, ED]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to