IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> sparkgraph -> 正文阅读

[人工智能]sparkgraph

什么是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.sparkGragh

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

    //rddVertex
    val 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))
    ))
    //rddEdge
    val 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()
  }

}

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:49:09  更:2021-08-02 10:51:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 15:15:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码