sparkgraph

2023-05-16

什么是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()
  }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sparkgraph 的相关文章

  • 解决error C2059: 语法错误:“::”问题

    错误代码提示 xff1a 1 gt f opencv opencv build include opencv2 flann lsh table h 266 error C2059 语法错误 f opencv opencv build inc
  • C++ string字符串的UTF-8与GBK(GB2312)编码相互转换转换

    UTF8 GBK Tools hpp内容如下 xff1a pragma once include lt iostream gt include lt string gt include lt fstream gt include lt wi
  • Ubuntu卸载protobuf并安装3.6.0版本的protobuf

    1 卸载Ubuntu自带的protobuf xff1b sudo apt get remove libprotobuf dev which protoc 运行完 which protoc 会显示一个protoc的路径 xff0c 如果没有显
  • python 图片上添加中文文字

    1 在 C Windows Fonts Microsoft YaHei UI 目录下搜索找到 msyh ttc xff0c 复制到工程目录 2 编写代码 xff1a from PIL import Image from PIL import
  • 移除数组中某个数

    移除数组中某个数 span class token macro property span class token directive keyword include span span class token string lt stdi
  • Ubuntu系统修改用户名,主机名

    0 Ubuntu是一个Linux操作系统 xff0c 修改密码和用户名是有危险的动作 xff0c 请谨慎修改 提示 xff1a 如果你要修改密码和用户名的话 xff0c 请先修改密码 xff0c 重启后 xff0c 再修改用户名 xff0c
  • Ubuntu 多用户管理及 SSH 远程连接

    目录 1 Ubuntu 多用户管理的场景 2 多用户管理理解 3 多用户管理 1 创建用户组 2 创建用户 3 给用户分配权限 4 SSH远程连接 1 Ubuntu 多用户管理的场景 多人需要远程登录服务器完成各自的任务 xff0c 同时各
  • 如何使用Typora快速高效的写Csdn博客

    最近终于有时间写点东西了 xff0c 准备写一些技术博客 xff0c 一是为了记录自己学习工作中的一些心得 xff0c 二是多年来自己的知识几乎都是从别的大牛那里白嫖来的 xff0c 现在有时间了也想把自己的一些感想贡献给爱好学习的年经人
  • keil5工程重命名

    有一个简单的办法 假设原来的工程文件名是first xff0c 在工程文件目录中 xff0c 你可以看到很多主文件名为first的文件 xff0c 其中有两个文件分别叫做 first uvopt和first uvproj 你只要把这两个文件
  • 由ModuleNotFoundError: No module named ‘_ssl‘引发的一场血案

    本人需要在服务器上 xff08 用户 xff09 安装cutadapt软件 xff0c 安装该软件需要用到下面这个命令 xff0c 非常明显使用python软件 xff0c 通过pip插件线上安装cutadapt软件 xff0c 于是开始了
  • HISAT2 - StringTie - DESeq2 pipeline 进行bulk RNA-seq

    软件官网 xff1a Hisat2 xff1a Manual HISAT2 StringTie xff1a StringTie 文章 xff1a Transcript level expression analysis of RNA seq
  • 命令提示符CMD美化

    命令提示符美化运行cmd会出现命令提示符 xff0c 黑底白字 xff0c 看似乎很别扭 xff0c 如果该成欢迎朋友的信息该多好呀 xff01 xff01 首先 xff0c 需要写一个批处理 注意以下括号里为解释的内容 xff0c 不要编
  • WSL-Ubuntu使用xfce4桌面环境

    安装WSL Ubuntu xff0c 参考我的另外一篇手工在非系统盘安装WSL xff08 Ubuntu xff09 安装软件MobaXterm运行MobaXterm xff0c 创建一个新的Session xff1a 安装桌面环境 xff
  • 无人驾驶:Term-1-p2-traffic-sign-classifier

    简介 Term 1第二节课是进行交通标志分类 xff0c 数据集主要来自于German Traffic Sign xff0c 包含了42种交通标志 xff0c 通过深度学习网络进行分类 环境准备 python 2 7numpyscikit
  • linux error note

    undefined reference to 96 wrong size cmpxchg 39 reason gcc 版本不兼容 xff0c 更换新版试试 在开发板和LINUX间用NFS挂载已成功 xff0c 但文件却看不到 xff1f r
  • PC终端执行开发板上的图形界面程序时出错:Gtk-WARNING **: cannot open display:

    场景 root span class hljs variable 64 NanoPi2 span span class hljs symbol home fa Documents opencv demo span span class hl
  • iOS label显示HTML(富文本)代码 (解析)并实现高度自适应

    网络解析后 有一个HTML字符串 需要在label显示 xff08 一般是要求显示的内容有颜色 字体 背景颜色的变化 xff09 如果不做处理 显示的就是HTML代码内容 处理方法如下 已知网络请求得到一个HTML 字符串 self HTM
  • ORACLE11G实战演练--数据库安装篇(一)

    作为一个主要职责为DBA的开发人员 xff0c 基本上部门内所有的数据库问题 xff0c 小到安装 sql开发 xff0c 大到系统恢复 优化 xff0c 每天遇到的大大小小的问题非常多 每次遇到问题的时候 xff0c 有时候凭借经验 xf
  • ssh no matching key exchange method found错误

    我在使用ubuntu2021 ssh 登录另一个系统时出现如下报错 xff1a Unable to negotiate with span class token number 192 168 span 2 1 port span clas

随机推荐

  • elasticsearch批量删除索引

    查看索引 在elasticsearch节点上使用curl XGET 39 http XX XX X XX 9200 cat shards 39 查看索引 root 64 192 168 x x scripts curl XGET 39 ht
  • git clone --mirror -q git://github.com/adobe-webplatform/eve.git

    解决办法 xff1a git全局添加一个属性 git config global url 34 https 34 insteadOf git 然后 xff0c 重新npm install
  • 理解npm包管理机制

    推荐文章 https segmentfault com q 1010000004114972 ea 61 496109 https blog csdn net azl397985856 article details 103982369
  • 面试题:使用promise实现并发请求限制(最优解)

    问题 xff1a 有 8 个图片资源的 url xff0c 已经存储在数组 urls 中 xff0c 而且已经有一个函数 function loadImg xff0c 输入一个 url 链接 xff0c 返回一个 Promise xff0c
  • PHP八大设计模式

    PHP命名空间 可以更好地组织代码 xff0c 与Java中的包类似 Test1 php span class php span class hljs preprocessor lt php span span class hljs key
  • putty 报server unexpectedly closed network connection错误

    由于IP变了 xff0c 再用putty访问组内的服务器时 xff0c 竟然总是出错 xff0c 报server unexpectedly closed network connection错误 我公司的服务器是centos7 xff0c
  • echarts主题属性设置

    theme 61 span class hljs comment 全图默认背景 span backgroundColor span class hljs string 39 rgba 0 0 0 0 39 span span class h
  • echarts和highchart的区别

    echarts 先大体了解一下echarts的历史 xff1a echarts是百度公司前端开发的一个图表库 支持柱状图 饼状图 k线图 map图 热导向图 折线图 主要采用canvas画图 highchart highcharts是国外的
  • Cannot resolve module 'fs'

    可能很多人都会遇到这个问题 xff0c 反正我的话已经遇到两次了 xff0c 上一次解决的时候没有记录解决办法 xff0c 这次又遇到了 xff0c 而且国内搜索引擎是搜不到这个问题的解决办法的 xff0c 所以写个博客记录一下吧 xff0
  • 调整浏览器滚动条样式

    我们知道浏览器自带滚动条很丑 xff0c 有时影响整个页面到美观 xff0c 尤其在页面内嵌一个滚动列表 xff0c 显得奇丑无比 xff0c 下面我们根据如下代码调节滚动条样式 span class token punctuation s
  • 空指针的查找经验

    对象为空不会空指针 而对象的属性方法为空就会报空指针异常 那么我们来看一个出空指针的例子 从报错行开始 每一个参数都输出 发现都有参数 ctrl 43 左键 进入每一个非jdk内部的方法查看 发现在map方法中 Map lt String
  • centos 8 将普通用户添加到sudoers

    centos 系统并没有将普通用户默认添加到sudoers用户组 xff0c 所以在centos xff08 6 xff0c 7 xff0c 8 xff09 中普通用户是无法使用sudo的 xff0c 可是为了系统安全 xff0c 特别如果
  • idea操作hadoop

    cd span class token operator span opt span class token operator span software tar span class token operator span zcvf ha
  • 基于VMware 的 hive安装与启动

    1将have jar文件解压到software目录下 tar span class token operator span zxf have span class token punctuation span span class toke
  • 配置本地镜像--配置华为镜像---安装mysql

    查看镜像是否挂载 df h 本地镜像挂载 mount dev sr0 mnt 配置本地镜像源 cd etc yum repos d 创建备份文件夹 xff0c 将默认的镜像文件备份至该文件夹 mkdir bak mv repo bak 创建
  • java实现简单的生成行为日志文件 (一)

    第一步 在windows中创建目录 第二部 写properties 配置信息 log4j span class token punctuation span rootLogger span class token operator 61 s
  • jdbc实现 mysql 表导入windows文件在导入hbase 并实现打胖包到centos7环境中运行

    此项目由二部分组成 一 配置文件 1配置文件的位置 D d 笔记目录 jdbchbase datasource properties 2配置文件的内容 span class token comment java连接hbase配置 span
  • Hbase底层设计 hbase命令

    hbase web http 20 0 0 180 60010 hbase构成 服务 HMaster 1 为Region server分配region 2 负责Region server的负载均衡 3 xff09 发现失效的Regionse
  • mybatis连接数据库 实现增删改查操作

    框架 pom xml span class token operator lt span span class token operator span xml version span class token operator 61 spa
  • sparkgraph

    什么是sparkgragh xff1a 它是为了为用户建立关系的视图 SparkGraph图计算 基础篇 1 what xff1f 表示数据关系的数据结构 基本元素 xff1a 点Vertex xff0c 边Edge Vertex Vert