文档章节

Spark(GraphX)

赵-猛
 赵-猛
发布于 2017/06/08 08:04
字数 513
阅读 2
收藏 0

Spark core
GraphX core
Pregel+GraphLab API
GraphX工具包


处理流水线

raw data from FS/DB->initail graph by ETL->subgraph by Slice->Pagerank by Graphlib/Pregel compute->store/ to FS/DB

 

数据结构(物理数据结构)

  RDPG(Resilient Distributed Property Graph),一种点和边都带属性的有向多重图
  实际上都会转化为RDD(RDD[VertexPartition]和RDD[EdgePartition])

操作视图(逻辑数据结构)

  RDPG,支持两种视图Graph视图和Collection/Table视图
  Collection/Table视图由边表和点表组成,使用spark rdd API
  Graph视图是直接操作图

 

图存储

  边分割(GraphX采用):每个顶点都存储一次,但有的边会被打断分到两台机器上
  点分割:每条边只存储一次,都只会出现在一台机器上
  每个图由3个RDD组成

图计算

  基础模型:BSP(bulk synchronous parallel),一次计算分多个超步,一个超步含三子步(并发计算,通信,栅栏同步)
  BSP扩展模型:
    消息通信模型(Pregel,顶点思考模型,实现顶点更新函数),
    GAS模型(GraphLab,邻居更新模型,实现gather、apply和scatter三个函数)
  GraphX采用GAS


  
工具包

  PageRank
  Connected conponents
  Strongly connected components
  Shortest Path
  SVD++
  ALS
  K-core
  Triangle Count
  LDA

 

Example

Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)

//设置运行环境
val conf = new SparkConf().setAppName("GX").setMaster("local")
val sc = new SparkContext(conf)

//顶点的数据类型是VD:(String,Int)
val vertexArray = Array(
  (1L, ("Alice", 28)),
  (2L, ("Bob", 27)),
  (3L, ("Charlie", 65)),
  (4L, ("David", 42)),
  (5L, ("Ed", 55)),
  (6L, ("Fran", 50))
)
//边的数据类型ED:Int
val edgeArray = Array(
  Edge(2L, 1L, 7),
  Edge(2L, 4L, 2),
  Edge(3L, 2L, 4),
  Edge(3L, 6L, 3),
  Edge(4L, 1L, 1),
  Edge(5L, 2L, 2),
  Edge(5L, 3L, 8),
  Edge(5L, 6L, 3)
)

//构造vertexRDD
val vertexRDD: RDD[(Long, (String, Int))] = sc.parallelize(vertexArray)

//构造edgeRDD
val edgeRDD: RDD[Edge[Int]] = sc.parallelize(edgeArray)

//构造图Graph[VD,ED]
val graph: Graph[(String, Int), Int] = Graph(vertexRDD, edgeRDD)

println("图中年龄大于30的顶点:")
graph.vertices.filter { case (id, (name, age)) => age > 30}.collect.foreach {
  case (id, (name, age)) => println(s"$name is $age")
}


 

© 著作权归作者所有

下一篇: Spark(Memory)
赵-猛
粉丝 6
博文 820
码字总数 500010
作品 0
深圳
技术主管
私信 提问
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机、平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题。图计算正在被广泛地...

Spark亚太研究院
2014/08/29
1K
0
Spark之GraphX的特点

1.基于内存实现了数据的复用与快速读取 具有较多迭代次数是图计算算法的一个重要特点。在海量数据背景下,如何保证图计算算法的执行效率是所有图计算模型面对的一个难题。基于MapReduce的图计...

mmake1994
2018/04/16
0
0
Spark 数据分析导论-笔记

Spark Core Spark Core 实现了Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。 Spark Core 中还包含了 对弹性分布式数据集(resilient distributed dataset,简...

Java搬砖工程师
2018/12/26
28
0
Spark2.1.0之模块设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/80386736 在阅读本文之前,读者最好已经阅读了《Spark2.1.0之初识Spark》和《Spark...

泰山不老生
2018/06/05
0
0
Spark—4(Spark核心组件)

1、Spark Streaming Spark Sreaming基于Spark Core实现了可扩展、高吞吐和容错的实时数据流处理。现在支持的数据源和处理后的结果存储如下图所示。 Spark Streaming将流式计算分解成一系列短...

叶枫啦啦
07/09
32
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
5
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
6
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
4
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部