博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GraphX 实现K-Core
阅读量:6219 次
发布时间:2019-06-21

本文共 1280 字,大约阅读时间需要 4 分钟。

背景

graphx实现k-core比较简单,参考淘宝技术部,已经给出了一个代码片段,基本上改改就可以定制自己的需求了。

code

import org.apache.spark._import org.apache.spark.graphx._import org.apache.spark.storage.StorageLevelimport org.apache.spark.graphx.lib._// load the graphval friendsGraph = GraphLoader.edgeListFile(sc, "data/friends.txt.", false, 512, StorageLevel.MEMORY_ONLY, StorageLevel.DISK_ONLY)var degreeGraph = friendsGraph.outerJoinVertices(friendsGraph.degrees) {  (vid, vd, degree) => degree.getOrElse(0)}.cache()val kNum = 200var lastVerticeNum: Long = degreeGraph.numVerticesvar thisVerticeNum: Long = -1var isConverged = falseval maxIter = 10var i = 1while (!isConverged && i <= maxIter) {  val subGraph = degreeGraph.subgraph(    vpred = (vid, degree) => degree >= kNum  ).cache()  degreeGraph = subGraph.outerJoinVertices(subGraph.degrees) {    (vid, vd, degree) => degree.getOrElse(0)  }.cache()  thisVerticeNum = degreeGraph.numVertices  if (lastVerticeNum == thisVerticeNum) {    isConverged = true    println("vertice num is " + thisVerticeNum + ", iteration is " + i)  } else {    println("lastVerticeNum is " + lastVerticeNum + ", thisVerticeNum is " + thisVerticeNum + ", iteration is " + i + ", not converge")    lastVerticeNum = thisVerticeNum  }  i += 1} // do something to degreeGraph

拼的主要是子图的计算速度。

全文完 :)

转载地址:http://aymja.baihongyu.com/

你可能感兴趣的文章
flex for循环
查看>>
生活中的经典感人语句
查看>>
JavaScript常用字符串函数
查看>>
数据交换格式XML和JSON对比
查看>>
强烈推荐Oracle的入门心得
查看>>
POJ 1195 Mobile phones (二维树状数组或线段树)
查看>>
LINUX下使用crontab进行RMAN备份实验
查看>>
Hive文件格式
查看>>
[LeetCode] Delete Node in a Linked List
查看>>
农历js脚本
查看>>
获取对象的 RTTI 属性与事件的函数
查看>>
java获得CPU使用率,系统内存,虚拟机内存等情况
查看>>
.NET操作Excel表格的整理
查看>>
vcl.Forms等与VCL界面有关的单元不支持跨平台
查看>>
Windows Vista for Developers——第一部分:Aero向导
查看>>
条件随机场CRF HMM,MEMM的区别
查看>>
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
搜狐首页出现一个硕大的错别字
查看>>
《ASP.NET Web API 2框架揭秘》
查看>>
[导入]竟然支持OpenGL ES!
查看>>