文档章节

spark-graphx-outerJoinVertices

水东流
 水东流
发布于 2016/06/28 16:20
字数 368
阅读 340
收藏 0

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)

}

其实都一样,模式多种写法,本质上,都是给了你一个元组,里面有join的顶点id,左边顶点属性,join上的顶点右边图对应的属性(可有可无呢)

 

使用列子:

使用pagerank进行排序,同时输出所属群组,顶点出度,入度

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"))

© 著作权归作者所有

水东流
粉丝 4
博文 51
码字总数 23858
作品 0
海淀
程序员
私信 提问
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之模块设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/80386736 在阅读本文之前,读者最好已经阅读了《Spark2.1.0之初识Spark》和《Spark...

泰山不老生
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 满足中文转拼音的需求

引入依赖 // https://mvnrepository.com/artifact/com.belerweb/pinyin4j //汉字转拼音compile group: 'com.belerweb', name: 'pinyin4j', version: '2.5.1' 写入中文转拼英的工具......

edison_kwok
38分钟前
5
0
IPSE接入Substrate/Polkadot插槽实现互操作性的运行原理

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

IPSE
44分钟前
156
0
linux配置安装phpMyAdmin的步骤记录

1、首先在phpMyAdmin官方网站 http://www.phpmyadmin.net/downloads下载源码包,或者通过脚本之家进行下载://www.jb51.net/codes/405261.html ,下载后上传到服务器解压即可,或者通过Linux...

蜗牛女孩
46分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部