GraphX Advent Calendar - Day 08 - EdgeRDD
GraphX Advent Calendar 2014 - Adventar 8日目です。
一昨日説明した、VertexRDD と EdgeRDD について、昨日は VertexRDD の処理を紹介しましたが、今日は EdgeRDD です。
mapValues
Day05 でも紹介した、それぞれの辺の編集処理を行うための関数です。
val mappedEdges:EdgeRDD[Long, (String, Long)] = edges.mapValues(edge => edge.attr._1 + 1)
reverse
各辺で持っている、接続元頂点(Src)と接続先頂点(Dst)を逆転させる処理です。
val reversedEdges:EdgeRDD[(Long, java.util.Date), (String, Long)] = edges.reverse
innerJoin
同じ PartitionStrategy を使っているEdgeRDD をJOINします。
val e2:RDD[Edge[String]] = sc.textFile("graphdata/day08-edges.csv").map(line => { val cols = line.split(",") Edge(cols(0).toLong, cols(1).toLong, cols(2)) }) val graph2:Graph[(String, Long), String] = Graph(v, e2) val edges2 = graph2.edges val innerJoinedEdge:EdgeRDD[(Long, java.util.Date, String), (String, Long)] = edges.innerJoin(edges2)((v1, v2, attr1, attr2) => (attr1._1, attr1._2, attr2))
次回予告
今日まで3日間かけて、辺と頂点を編集する処理を見てきましたが、明日はグラフ全体に対する編集処理を見ていきたいと思います。
尚、Day06からDay08までのサンプルソースはこちらで御参照いただけます。
graphx-advent-samples/Day06_08.scala at master · ironpeace/graphx-advent-samples · GitHub