什么是sparkgragh : 它是为了为用户建立关系的视图
SparkGraph图计算
基础篇
1. what?
表示数据关系的数据结构
基本元素: 点Vertex,边Edge
Vertex[(VertexId:Long,VertexAttr:Any)]
Edge[(srcVertexId:Long,dstVertexId:Long,attr:Any)]
组合元素: Triplet(源点SrcVertex+边Edge+目标点LstVertex)
类似于RDD
弹性的
分布式的
容错的
2. why?
能够表达复杂的数据关系,并做复杂的图计算
User(userId:Int,name:String,age:Int)
user_relation(fromUserId:Int,toUserId:Int,relation:String)
3. where?
社交
4. how?
val sc:SparkContext = …
val rddVertex = sc.makeRDD(Seq[(VertexId,T]) //创建点RDD T点属性:单个值用基础类型,多个值用样例类
val rddEdge = sc.makeRDD(Seq[Edge(T)]) //创建边RDD T边属性: 单个值用基础类型,多个值用样例类
val gragh = Graph(rddVertex,rddEdge)
属性
graph.vertices //点集合
graph.edges //边集合
graph.triplets //点边点组合集合
gragh.inDegrees //入度 到某点取得记录条数 (?,dstVertexId)
graph.outDegrees //出度 从某点出发的记录条数 (srcVertexId,?)
转换算子
graph.mapTriplets ED2:Graph[VD,ED2]
//针对点属性逐个变形处理,返回新的属性,最终返回基于变性后的点和原来的边的图对象
graph.mapVertices VD2:Graph[VD2,ED] 变一个点出去
graph.mapEdges ED2:Graph[VD,ED2] 变一个边出去
算法篇

package cn.kgc.sparkGraghimport org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.graphx._object SparkGraph01 {case class Person(name:String,age:Int)def main(args: Array[String]): Unit = {val CONF = new SparkConf().setMaster("local[*]").setAppName("spark_graphx_02")val SC = new SparkContext(CONF)//rddVertexval rddVertex: RDD[(Long, Person)] = SC.makeRDD(Array((1L, Person("Henry", 22)),(2L, Person("Pola", 20)),(3L, Person("Ariel", 18)),(4L, Person("Jack", 29)),(5L, Person("Tom", 31)),(6L, Person("Shel", 16)),(7L, Person("Niky", 28))))//rddEdgeval rddEdge: RDD[Edge[String]] = SC.makeRDD(Array(Edge(1L, 2L, "family"),Edge(1L, 3L, "family"),Edge(1L, 4L, "teacher"),Edge(1L, 5L, "teacher"),Edge(1L, 6L, "teacher"),Edge(1L, 7L, "teacher"),Edge(4L, 5L, "friend"),Edge(4L, 6L, "friend"),Edge(6L, 7L, "friend"),Edge(1L, 4L, "friend"),Edge(1L, 5L, "friend")))val graph: Graph[Person, String] = Graph(rddVertex, rddEdge).cache()//22岁以上的人 点遍历//(VertexId,Person)//graph.vertices.filter(_._2.age>22).foreach(println)//好友关系  关系遍历//(srcVertexId,dstVertexId,attr)//graph.edges.filter(_.attr.equals("friend")).foreach(println)//我的好友的数量var ME = 1L//    val graphMe: Graph[Person, PartitionID] = graph.mapTriplets(e => {//      //      e.srcId     //源点VertexId
//      //      e.srcAttr   //源点    --Person
//      //      e.dstId     //目标点   --VertexId
//      //      e.dstAttr   //目标点   --Person
//      //      e.attr      //关系数据   String
//      if (e.srcId == 1L && e.attr.equals("friend")) {//        1
//      } else {//        0
//      }
//    })
//    graphMe.triplets.foreach(e=>println(s"${e.srcId}\t${e.srcAttr}\t${e.attr}"))
//    println("____")
//    println(graphMe.triplets.map(_.attr).sum())//    //aggregateMessages[Int]  Int=>消息的类型
//    graph.aggregateMessages[Int](sendMsg = ec=>{//      //类似于Triplet,扩展了发送消息的函数
//      //ec.sendToSrc(msg:Int) 向源点发送消息
//      //ec.sendToDst(msg:Int) 向目标点发送消息
//      if(ec.srcId == ME && ec.attr.equals("teacher")){//        ec.sendToSrc(1)
//      }
//    },mergeMsg = _+_).foreach(println)
//    //(1,2) 1号用户有2个好友SC.stop()}}

sparkgraph相关推荐

  1. Spark GraphX 中的PageRank算法、pregel函数、航班飞行网图分析

    PageRank算法 PageRank算法原理剖析及Spark实现 - 简书 (jianshu.com) import org.apache.spark.SparkContext import org ...

最新文章

  1. Phpcms与ucenter整合系统设置
  2. 湖南网络推广教大家如何“挽回”网站被降权的排名和权重?
  3. java action 上传文件_JavaWeb框架_Struts2_(七)-----文件的上传和下载
  4. 吴恩达深度学习笔记7-Course2-Week3【超参数调试、Batch 正则化和程序框架】
  5. python之attrgetter函数对对象排序
  6. NASA 传奇数学家去世,她曾笔算了登月轨道
  7. 《出发吧一起》第二阶段个人总结——Day01
  8. 图机器学习在度小满风控中的应用
  9. 迅雷下gho文件变成php,GHO格式文件转换成WIM格式文件
  10. 阿里数据中台与OneData
  11. Android 串口蓝牙通信开发Java版本
  12. 公众号运营工具推荐大会!这些如果你还没用就out啦!
  13. 将数据库转换为word文档
  14. 2. Switch能否用String做参数?
  15. 网站添加“富强·民主·爱国”鼠标点击特效美化
  16. 我也是一只IT小小鸟
  17. CSS使用彩色字体图标(Vue/Uni)
  18. 电脑游戏业编年史之一游戏的诞生
  19. 简单题目:给出一个整数,转换为16进制的字符
  20. flume-Kafka-Strom架构的搭建及使用

热门文章

  1. 使用代理IP发送请求,出现502错误 java.io.IOException: Unable to tunnel through proxy. Proxy returns “HTTP/1.1 502
  2. Monkey-介绍、优势、操作步骤、中止monkey、
  3. js逆向-某市公共资源交易网
  4. ElasticsearchTemplate 的API
  5. 计算机系统的虚拟存储器,其最大容量和实际容量分别取决于哪些因素
  6. jmeter压测步骤
  7. TCP拥塞控制(CC),让我不得开心颜
  8. 最近找实习的笔试面试经历
  9. 获取美元人民币以及USDT人民币汇率-Python版
  10. 什么是CAA? 如何解决CAA未授权问题?