十、spark graphx的scala示例
简介

spark graphx官网:http://spark.apache.org/docs/latest/graphx-programming-guide.html#overview
spark graphx是基于spark core之上的一个图计算组件,graphx扩展了spark RDD,是spark对于图计算的一种抽象。
这里的图,不是“图画”的意思,是一种数据结构。这种数据结构由“点”和“线”组成,拿用户关系图来说,“点”描述的就是用户,“线”描述的就是这些用户之间的关系,所以由“点”和“线”组成了一张“用户关系图”,如图:

vertex table: 点,是由ID和Property属性组成的,ID必须是Long类型
edge table:线,是由起始ID,终点ID,property属性组成的,ID也必须为Long类型
property graph:图,由vertex和edge的数据,就可以构建出一张graph图数据结构
而spark graphx就是将这种数据结构创建出来,并提供简单易用的API来操作这个数据结构,如:查询、转换、关联、聚合等
代码示例
下面是scala语言的代码示例:
import org.apache.spark.graphx.{Edge, Graph}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* @Description spark graphx demo
* @Author lay
* @Date 2018/12/09 20:19
*/
object SparkGraphxDemo {
var conf: SparkConf = _
var sc: SparkContext = _
var userData: Array[String] = Array("1 lay", "2 marry", "3 gary")
var relationData: Array[String] = Array("1 2 朋友", "1 3 同事", "2 3 姐弟")
var userRDD: RDD[(Long, String)] = _
var relationRDD: RDD[Edge[String]] = _
def init(): Unit = {
conf = new SparkConf().setAppName("spark graphx demo").setMaster("local")
sc = new SparkContext(conf)
}
def loadRdd(): Unit = {
userRDD = sc.parallelize(userData).map { x => val lines = x.split(" "); (lines(0).toLong, lines(1)) }
relationRDD = sc.parallelize(relationData).map { x => val lines = x.split(" "); Edge(lines(0).toLong, lines(1).toLong, lines(2)) }
}
def main(args: Array[String]): Unit = {
// 初始化
init()
// 加载rdd
loadRdd()
// 创建graph
var graph = Graph(userRDD, relationRDD)
// 找出和lay有关系的人
graph.triplets.filter(x => x.srcId == 1L).foreach{x => printf("%s是%s的%s", x.dstAttr, x.srcAttr, x.attr);println()}
}
}
我们将userRDD和relationRDD构建成了一个抽象结构Graph,然后过滤出了和lay有关系的人,并循环打印出结果,如下:
marry是lay的朋友
gary是lay的同事
十、spark graphx的scala示例的更多相关文章
- 十二、spark MLlib的scala示例
简介 spark MLlib官网:http://spark.apache.org/docs/latest/ml-guide.html mllib是spark core之上的算法库,包含了丰富的机器学习 ...
- 十一、spark SQL的scala示例
简介 spark SQL官网:http://spark.apache.org/docs/latest/sql-programming-guide.html sparkSQL是构建在sparkCore之 ...
- Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark实战高手之路】
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交 ...
- 转载:Spark GraphX详解
1.GraphX介绍 1.1 GraphX应用背景 Spark GraphX是一个分布式图处理框架,它是基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求. ...
- Spark GraphX 的数据可视化
概述 Spark GraphX 本身并不提供可视化的支持, 我们通过第三方库 GraphStream 和 Breeze 来实现这一目标 详细 代码下载:http://www.demodashi.com ...
- 大数据技术之_19_Spark学习_05_Spark GraphX 应用解析 + Spark GraphX 概述、解析 + 计算模式 + Pregel API + 图算法参考代码 + PageRank 实例
第1章 Spark GraphX 概述1.1 什么是 Spark GraphX1.2 弹性分布式属性图1.3 运行图计算程序第2章 Spark GraphX 解析2.1 存储模式2.1.1 图存储模式 ...
- 转载:四两拨千斤:借助Spark GraphX将QQ千亿关系链计算提速20倍
四两拨千斤:借助Spark GraphX将QQ千亿关系链计算提速20倍 时间 2016-07-22 16:57:00 炼数成金 相似文章 (5) 原文 http://www.dataguru.cn/ ...
- Spark GraphX从入门到实战
第1章 Spark GraphX 概述 1.1 什么是 Spark GraphX Spark GraphX 是一个分布式图处理框架,它是基于 Spark 平台提供对图计算和图挖掘简洁易用的而丰 ...
- Spark—GraphX编程指南
Spark系列面试题 Spark面试题(一) Spark面试题(二) Spark面试题(三) Spark面试题(四) Spark面试题(五)--数据倾斜调优 Spark面试题(六)--Spark资源调 ...
随机推荐
- kali linux之steghide
Steghide Linux 命令行隐写工具 Steghide是一款开源的隐写术软件,它可以让你在一张图片或者音频文件中隐藏你的秘密信息,而且你不会注意到图片或音频文件发生了任何的改变.而且,你的秘 ...
- 中山纪念中学培训DAY1
哇啊啊啊啊啊啊$……$ 并不像说环境怎么样. $Day1$模拟赛 稳重一点选了提高$B$ 然后$5min$后: $t1$装压$DP$最短路 $t2$裸地贪心 $t3……$哇$t3$怎么做啊啊啊啊. $ ...
- 引入阿里的druid
Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. Druid支持所有JDBC兼容的数据库,包括 ...
- C++基础知识-派生类、调用顺序、访问等级、函数遮蔽
一.派生类的概念 类之间有一种层次关系,有父亲类,有孩子类. 车这个类,当成父类(也叫基类.超类),派生出卡车.轿车,他们属于孩子类(子类.派生类) 继承:有父亲类,有孩子类,构成了层次关系.继承这种 ...
- Linux运维: Rsync同步数据(ubuntu16.04+windows10)
rsync同步数据 -环境:Linux (ubuntu16.04) + windows10 Linux: 安装 sudo apt-get install rsync rsync --version 查 ...
- 编译原理(一)绪论概念&文法与语言
绪论概念&文法与语言 以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 绪论基本概念 1. 低级语言:字位码.机器语言.汇编语言.与特定的机器有关,功效高,但使用复杂.繁琐.费时 ...
- 洛谷 P4774 / loj 2721 [NOI2018] 屠龙勇士 题解【同余】【exgcd】【CRT】
推导过程存在漏洞+exCRT板子没打熟于是期望得分÷实际得分=∞? 题目描述 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号 \(1\sim n\) 顺序杀掉 \(n\ ...
- [Re:从零开始的分布式] 0.x——分布式锁概述
为什么需要分布式锁 Martin Kleppmann是英国剑桥大学的分布式系统的研究员,Martin认为一般我们使用分布式锁有两个场景: 效率:使用分布式锁可以避免不同节点重复相同的工作,这些工作会浪 ...
- 云服务器、vps、虚拟主机的区别
云服务器 Elastic Compute Service, 简称ECS 好多人理解云服务器和VPS一样,更有甚者说以前的VPS现在的说法就是云服务器,其实不然,云服务器是一个计算,网络,存储的组合.简 ...
- Q72 编辑距离
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输 ...