python graphx_GraphX的三大图算法

1. PageRank

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值