spark graphx实现共同好友的聚合
2018-01-20 16:01
337 查看
spark graphx是一款优秀的图计算框架,对于批量计算图计算借助于spark的计算引擎,实现数据的快速聚合。
对于最基本的 共同好友推荐可以很方便的实现,一下为实现代码:
数据源的数据格式:
1 2
2 4
。。。
对于最基本的 共同好友推荐可以很方便的实现,一下为实现代码:
数据源的数据格式:
1 2
2 4
。。。
package mob import org.apache.spark.graphx.{GraphLoader, VertexRDD} import org.apache.spark.{SparkConf, SparkContext} object GraphRale { /** * 数据列表的笛卡尔乘积:{1,2,3,4}=>{(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)} * @param input * @return */ def ciculate(input:List[Long]):Set[String]={ var result = Set[String]() input.foreach(x=>{ input.foreach(y=>{ if(x<y){ result += s"${x}|${y}" }else if(x>y){ result += s"${y}|${x}" } }) }) return result; } def twoDegree()={ val conf = new SparkConf().setMaster("local").setAppName("graph") val sc = new SparkContext(conf) val graph = GraphLoader.edgeListFile(sc,"D:\\grap.txt") val relate: VertexRDD[List[Long]] = graph.aggregateMessages[List[Long]]( triplet=>{ triplet.sendToDst(List(triplet.srcId)) }, (a,b)=>(a++b) ).filter(x=>x._2.length>1) val re = relate.flatMap(x=>{ for{temp <- ciculate(x._2)}yield (temp,1) }).reduceByKey(_+_) re.foreach(println(_)) } def main(args: Array[String]): Unit = { twoDegree() } }
相关文章推荐
- Spark实现之 查找共同好友
- Spark Graphx 实现图中极大团挖掘, 伪并行化算法
- Spark Graphx 构建graph和aggregateMessages聚合消息
- 好友推荐—基于关系的java和spark代码实现
- SparkSQL如何实现聚合下推
- Spark 共同好友解决方案:求大量集合的两两交集
- 使用MapReduce实现寻找共同好友的案例
- SparkGraphX加权最短路径算法实现
- Spark GraphX实现Bron–Kerbosch算法-极大团问题
- MapReduce实现之 查找共同好友
- Spark生态之Spark Graphx介绍、实现分析和实例
- Spark GraphX实现PageRank
- hadoop项目:社交粉丝,共同好友数据分析实现
- 用spark实现count(distinct fieldname)形式的聚合
- MapReduce实现寻找共同好友
- spark graphx 实现图的一度正反向搜索,二度正反向搜索
- Spark实现之 好友推荐
- Spark SQL中的聚合(Aggregate)实现
- 用OpenSceneGraph实现的NeHe OpenGL教程 - 第三课
- SparkSQL中的Sort实现(二)