GraphX的三大图算法

1. PageRank

http://blog.csdn.net/hguisu/article/details/7996185

 

2. Connected Components

 

3. Triangle Counting

 

例子:

users.txt

1,BarackObama,Barack Obama
2,ladygaga,Goddess of Love
3,jeresig,John Resig
4,justinbieber,Justin Bieber
6,matei_zaharia,Matei Zaharia
7,odersky,Martin Odersky
8,anonsys

followers.txt

2 1
4 1
1 2
6 3
7 3
7 6
6 7
3 7
算法实战:
package main.scala

import org.apache.spark.graphx.GraphLoader
import org.apache.spark.{SparkConf, SparkContext}

object graphx_algorism {
  System.setProperty("hadoop.home.dir","E:/zhuangji/winutil/")

  def main(args:Array[String]):Unit={

    val conf=new SparkConf().setMaster("local[2]").setAppName("graph_algorism").set("spark.cores.max","10") //set spark.cores.max 可以设置核数
    val sc=new SparkContext(conf)

    // graph初始化,从文件中读
    val graph=GraphLoader.edgeListFile(sc,"E:/Java_WS/ScalaDemo/data/followers.txt")
    val users=sc.textFile("E:/Java_WS/ScalaDemo/data/users.txt").map{
      line=>val fields=line.split(",")
        (fields(0).toLong,fields(1))
    }
    

    // 1.
    //PageRank
    val ranks=graph.pageRank(0.001).vertices  // 0.001 是PageRank 的参数,尚未知道是什么意思
    ranks.collect.foreach(println)
    val ranksByUsername=users.join(ranks).map{
      case(id,(username,rank))=>(username,rank)
    }
    println(ranksByUsername.collect().mkString("\n"))
    

    //2.
    // Connected Components: LianTongTi
    val cc=graph.connectedComponents().vertices
    println(cc.collect)
    val ccByUsername=users.join(cc).map{
      case(id,(username,cc))=>(username,cc)
    }
    println(ccByUsername.collect().mkString("\n"))
    

    //3.
    //Triangle Count
    val graphT=GraphLoader.edgeListFile(sc,"E:/Java_WS/ScalaDemo/data/followers.txt",true).partitionBy(PartitionStrategy.RandomVertexCut)
    val triCounts=graphT.triangleCount().vertices
    val triCountByUsername=users.join(triCounts).map{case(id,(username,tc))=>(username,tc)}
    println(triCountByUsername.collect().mkString("\n"))

}

  

 

posted on 2016-09-28 16:35 Suckseedeva 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/skyEva/p/5916931.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值