Spark学习--GraphX初体验

本节主要理解什么是点、线以及利用点和线创建图

为什么需要图计算

许多大数据以大规模图或网络的形式呈现
许多非图结构的大数据,常会被转换为图模型进行分析
图数据结构很好地表达了数据之间的关联性

图(Graph)的基本概念

图是由顶点集合(vertex)及顶点间的关系集合(边edge)组成的一种网状数据结构
1、通常表示为二元组:Gragh=(V,E)
2、可以对事物之间的关系建模
应用场景
1、在地图应用中寻找最短路径
2、社交网络关系
3、网页间超链接关系

图的术语

顶点(Vertex)
边(Edge)

在这里插入图片描述
有向图

G=(V,E)
V={A,B,C,D,E}
E={<A,B>,<B,C>,<B,D>,<C,E>,<D,A>,<E,D>}

在这里插入图片描述

无向图

G=(V,E)
V={A,B,C,D,E}
E={(A,B),(A,D),(B,C),(B,D),(C,E),(D,E)}

在这里插入图片描述
有环图
包含一系列顶点连接的回路(环路)

在这里插入图片描述无环图
DAG即为有向无环图

在这里插入图片描述
度:一个顶点所有边的数量
出度:指从当前顶点指向其他顶点的边的数量
入度:其他顶点指向当前顶点的边的数量
在这里插入图片描述

Spark GraphX 简介

GraphX是Spark提供分布式图计算API
GraphX特点
1、基于内存实现了数据的复用与快速读取
2、通过弹性分布式属性图(Property Graph)统一了图视图与表视图
3、与Spark Streaming、Spark SQL和Spark MLlib等无缝衔接

实例演示

在这里插入图片描述

问题:年龄大于30岁的有哪些?

package com.kgc.kb07.test0810

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.graphx._


object testGraphX {
  def main(args: Array[String]): Unit = {
    //1、获取连接
    val conf = new SparkConf().setAppName("testGraphX").setMaster("local[*]")
    val sc = SparkContext.getOrCreate(conf)
    //2、声明一个tweeters
    val tweeters = Array((1L, ("Alice", 28)), (2L, ("Bob", 27)), (3L, ("Charlie", 65)), (4L, ("David", 42)), (5L, ("Ed", 55)), (6L, ("Fran", 50)))
    val rddTweeters = sc.parallelize(tweeters)
    //3、声明一个Edges 注意转换格式
    val followRelations = Array((2L, 1L, 7), (4L, 1L, 1), (2L, 4L, 2), (5L, 2L, 2), (3L, 2L, 4), (5L, 6L, 3), (3L, 6L, 3), (5L, 3L, 8))
    val rddEdges = sc.parallelize(followRelations.map(x => Edge(x._1, x._2, x._3)))
    //4、声明一个graph
    val graph = Graph(rddTweeters, rddEdges)
    graph.vertices.collect.foreach(println)//有哪些节点
    println("-----------------")
    graph.edges.collect.foreach(println) //有哪些边
    println("-----------------")
    graph.inDegrees.collect.foreach(println) //图形中 每个节点有几个线进来(6,2)->第六个节点有两根进来
    println("-----------------")
    graph.outDegrees.collect.foreach(println) //图形中 每个节点有几根线出去
    println("-----------------")
    //5、有哪些人年龄大于50岁
    graph.vertices.filter { case (id, (name, age)) => age > 30 }.collect.foreach(println)
  }
}

(6,(Fran,50))
(1,(Alice,28))
(2,(Bob,27))
(3,(Charlie,65))
(4,(David,42))
(5,(Ed,55))
-----------------
Edge(2,1,7)
Edge(4,1,1)
Edge(2,4,2)
Edge(5,2,2)
Edge(3,2,4)
Edge(5,6,3)
Edge(3,6,3)
Edge(5,3,8)
-----------------
(6,2)
(1,2)
(2,2)
(3,1)
(4,1)
-----------------
(2,2)
(3,2)
(4,1)
(5,3)
-----------------
(6,(Fran,50))
(3,(Charlie,65))
(4,(David,42))
(5,(Ed,55))

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介:  本项目课程是一门极具综合性和完整性的大型项目课程;课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。 本课程项目涵盖数据采集与预处理、数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。  拒绝demo,拒绝宏观抽象,拒绝只讲不练,本课程高度揉和理论与实战,并兼顾各层次的学员,真正从0开始,循序渐进,每一个步骤每一个环节,都会带领学员从需求分析开始,到逻辑设计,最后落实到每一行代码,所有流程都采用企业级解决方案,并手把手带领学员一一实现,拒绝复制粘贴,拒绝demo化的实现。并且会穿插大量的原创图解,来帮助学员理解复杂逻辑,掌握关键流程,熟悉核心架构。   跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建......逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。  由于本课程不光讲解项目的实现,还会在实现过程中反复揉和各种技术细节,各种设计思想,各种最佳实践思维,学完本项目并勤于实践的话,学员的收获将远远超越一个项目的具体实现,更能对大型数据系统开发产生深刻体悟,对很多技术的应用将感觉豁然开朗,并带来融会贯通能力的巨大飞跃。当然,最直接的收获是,学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER课程模块: 1. 数据采集:涉及到埋点日志flume采集系统,sqoop业务数据抽取系统等; 2. 数据预处理:涉及到各类字典数据构建,复杂结构数据清洗解析,数据集成,数据修正,以及多渠道数据的用户身份标识打通:ID-MAPPING等;3. 数据仓库:涉及到hive数仓基础设施搭建,数仓分层体系设计,数仓分析主题设计,多维分析实现,ETL任务脚本开发,ETL任务调度,数据生命周期管理等;4. 数据治理:涉及数据资产查询管理,数据质量监控管理,atlas元数据管理系统,atlas数据血缘管理等;5. 用户画像系统:涉及画像标签体系设计,标签体系层级关系设计,各类标签计算实现,兴趣类标签的衰减合并,模型标签的机器学习算法应用及特征提取、模型训练等;6. OLAP即席分析平台:涉及OLAP平台的整体架构设计,技术选型,底层存储实现,Presto查询引擎搭建,数据服务接口开发等;7. 数据服务:涉及数据服务的整体设计理念,架构搭建,各类数据访问需求的restapi开发等;课程所涉及的技术: 整个项目课程中,将涉及到一个大型数据系统中所用到的几乎所有主要技术,具体来说,包含但不限于如下技术组件:l Hadoopl Hivel HBasel SparkCore /SparkSQL/ Spark GRAPHX / Spark Mllibl Sqoopl Azkabanl Flumel lasal Kafkal Zookeeperl Solrl Prestop

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值