## spark-graphx-outerJoinVertices 原

水东流

outerJoinVertices的作用：通过join将两个图的顶点属性进行汇总，因为是outjoin，可能左边的图的点，没有join上右边对应的点，这时候，这个函数给你了一个选择的判断。

def outerJoinVertices[U, VD2](other: RDD[(VertexID, U)])
(mapFunc: (VertexID, VD, Option[U]) => VD2)
: Graph[VD2, ED]

mapFunc的几种写法：

1）val inputGraph: Graph[Int, String] =
graph.outerJoinVertices(graph.outDegrees)((vid, _, degOpt) => degOpt.getOrElse(0))

2）val degreeGraph = graph.outerJoinVertices(outDegrees) { (id, oldAttr, outDegOpt) =>
outDegOpt match {
case Some(outDeg) => outDeg
case None => 0 // No outDegree means zero outDegree
}

}

3）val rank_cc = cc.outerJoinVertices(pagerankGraph.vertices) {
case (vid, cc, Some(pr)) => (pr, cc)
case (vid, cc, None) => (0.0, cc)

}

val graph = Graph.fromEdges(edgeRdd2, None)
val cc=graph.connectedComponents

val pagerankGraph = graph.pageRank(0.001)
val out_de=graph.outDegrees
val in_de=graph.inDegrees

val rank_cc = cc.outerJoinVertices(pagerankGraph.vertices) {
case (vid, cc, Some(pr)) => (pr, cc)
case (vid, cc, None) => (0.0, cc)
}

val rank_cc_outd=rank_cc.outerJoinVertices(out_de){
case (vid, rc, Some(od)) => (rc, od)
case (vid, rc, None) => (rc, 0)
}

val rank_cc_out_in=rank_cc_outd.outerJoinVertices(in_de){
case (vid, rco, Some(id)) => (rco, id)
case (vid, rco, None) => (rco, 0)
}

(19526800,(((0.15,1),5),0))

println(rank_cc_out_in.vertices.map(e=>(e._1.toString,e._2._1._1._1,e._2._1._1._2,e._2._1._2,e._2._2)).join(alldeviceIdsMapR).map(item=>(item._2,item._1)).top(100)(Ordering.by(_._2._2)).mkString("\n"))

println(rank_cc_out_in.vertices.top(100)(Ordering.by(_._2._1._1._1)).map(e=>(e._1.toString,e._2._1._1._1+","+e._2._1._1._2+","+e._2._1._2+","+e._2._2)).join(alldeviceIdsMapR).map(item=>item._2+","+item._1).mkString("\n"))

### 水东流

Spark GraphX宝刀出鞘，图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘，图文并茂研习图计算秘笈 大数据的概念与应用，正随着智能手机、平板电脑的快速流行而日渐普及，大数据中图的并行化处理一直是一个非常热门的话题。图计算正在被广泛地...

Spark亚太研究院
2014/08/29
1K
0
Spark之GraphX的特点

1.基于内存实现了数据的复用与快速读取 具有较多迭代次数是图计算算法的一个重要特点。在海量数据背景下，如何保证图计算算法的执行效率是所有图计算模型面对的一个难题。基于MapReduce的图计...

mmake1994
2018/04/16
0
0
Spark 数据分析导论-笔记

Spark Core Spark Core 实现了Spark 的基本功能，包含任务调度、内存管理、错误恢复、与存储系统交互等模块。 Spark Core 中还包含了 对弹性分布式数据集（resilient distributed dataset，简...

Java搬砖工程师
2018/12/26
56
0
Spark2.1.0之模块设计

2018/06/05
0
0
Spark—4（Spark核心组件）

1、Spark Streaming Spark Sreaming基于Spark Core实现了可扩展、高吞吐和容错的实时数据流处理。现在支持的数据源和处理后的结果存储如下图所示。 Spark Streaming将流式计算分解成一系列短...

07/09
51
0

arduino项目-1. 模拟楼道灯

@toc 1.1 情景说明 说明 漆黑的夜晚，当有人非法进入一所房屋，房屋内的灯在恰当的时间亮起，也许会有效阻止非法活动的继续。 效果展示 1.2 实验器材 器材名称 数量 继电器 1 人体红外感应器...

acktomas
27分钟前
4
0
Nacos 常见问题及解决方法

Nacos 开源至今已有一年，在这一年里，得到了很多用户的支持和反馈。在与社区的交流中，我们发现有一些问题出现的频率比较高，为了能够让用户更快的解决问题，我们总结了这篇常见问题及解决方...

33分钟前
6
0
pinyin4j 满足中文转拼音的需求

edison_kwok
38分钟前
5
0

Substrate框架将区块链的众多功能都模块化，对于开发者来说，只是一个选择的问题，同时还保持了众多的可以定制的功能和模块，比如底层通信模块，比如账户体系，比如共识机制等都是可以自己定...

IPSE
44分钟前
156
0