文档章节

sparkGraphX 基础操作

JPblog
 JPblog
发布于 2017/09/08 14:50
字数 432
阅读 14
收藏 0
点赞 0
评论 0

1. 目的

    由数组形成graph并展示基础操作

2. 素材

    由Array生成vertexRDD和edgeRDD

3. 代码

/**
  * Created by puwenchao on 2016-07-06.
  */
package test
import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.graphx._
import org.apache.spark.graphx.lib.ShortestPaths
import org.apache.spark.rdd.RDD

object triangle {
  def main(args: Array[String]) {
    //屏蔽日志
    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)

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

    //设置顶点和边,注意顶点和边都是用元组定义的Array
    //顶点的数据类型是VD:(String,Int)
    val vertexArray = Array(
      (3L, ("rxin", 28)),
      (7L, ("jgonzal", 27)),
      (5L, ("franklin", 65)),
      (2L, ("istoica", 42))
    )
    //边的数据类型ED:Int
    val edgeArray = Array(
      Edge(3L, 7L, 7),
      Edge(5L, 3L, 2),
      Edge(2L, 5L, 4),
      Edge(5L, 7L, 3)
    )

    //构造vertexRDD和edgeRDD
    val vertexRDD: RDD[(Long, (String, Int))] = sc.parallelize(vertexArray)
    val edgeRDD: RDD[Edge[Int]] = sc.parallelize(edgeArray)
    //构造图Graph[VD,ED]
    val graph: Graph[(String, Int), Int] = Graph(vertexRDD, edgeRDD)
    //筛选有效子图
    val subgraph= graph.subgraph(vpred = (id,attr) => attr._2 != "Missing")
    println("subgraph:")
    subgraph.vertices.collect().foreach(println(_))


    //三元组
    val e=graph.triplets
    println("\ntriplets:")
    e.take(10).foreach {println}

    //总边数
    val f=graph.numEdges
    println("\nnumEdges:"+f)

    //总顶点数
    val g=graph.numVertices
    println("\nnumVertices:"+g)

    //顶点入度
    val h=graph.inDegrees
    println("\ninDegrees:"+h.collect.mkString(","))

    //顶点出度
    val i=graph.outDegrees
    println("\noutDegrees:"+i.collect.mkString(","))

    //筛选来源点ID>目标点ID
    val j=graph.edges.filter { case Edge(src, dst, prop) => src > dst }.count
    println("\nedge-filter:"+j)

    //三角计数
    val l=graph.triangleCount.vertices
    println("\ntriangleCount:")
    l.foreach(println)

    //网页排序算法
    val m=graph.pageRank(0.1).vertices
    println("\npageRank:")
    m.foreach(println)

    //最短路径
    val landmarks = Seq(7).map(_.toLong)
    val o=ShortestPaths.run(graph,landmarks).vertices
    println("\nShortestPaths:")
    o.foreach(println)

    sc.stop()
  }
}

4. 输出

    subgraph:
    (3,(rxin,28))
    (7,(jgonzal,27))
    (5,(franklin,65))
    (2,(istoica,42))

    triplets:
    ((2,(istoica,42)),(5,(franklin,65)),4)
    ((3,(rxin,28)),(7,(jgonzal,27)),7)
    ((5,(franklin,65)),(3,(rxin,28)),2)
    ((5,(franklin,65)),(7,(jgonzal,27)),3)

    numEdges:4

    numVertices:4

    inDegrees:(3,1),(7,2),(5,1)

    outDegrees:(3,1),(5,2),(2,1)

    edge-filter:1

    triangleCount:
    (3,1)
    (7,1)
    (5,1)
    (2,0)

    pageRank:
    (3,0.2679375)
    (7,0.39543749999999994)
    (5,0.27749999999999997)
    (2,0.15)

    ShortestPaths:
    (3,Map(7 -> 1))
    (7,Map(7 -> 0))
    (5,Map(7 -> 1))
    (2,Map(7 -> 2))

© 著作权归作者所有

共有 人打赏支持
JPblog
粉丝 10
博文 51
码字总数 27225
作品 0
朝阳
程序员
GraphX二度关系(代码)

关于GraphX的存储模式以及存储数据结构、二度关系的解释等有一个很好的网址: http://www.dataguru.cn/article-10425-1.html 该网站介绍了二度关系的算法实现,下面我给出具体的SparkGraphX...

mbshqqb ⋅ 2017/11/09 ⋅ 0

DMP用户画像系统(SparkGraphX SparkCore SparkSQL)

DMP用户画像系统(SparkGraphX SparkCore SparkSQL) 课程观看地址:http://www.xuetuwuyou.com/course/221 课程出自学途无忧网:http://www.xuetuwuyou.com DMP系统 用户画像也称人物角色,...

含笑三步 ⋅ 2017/10/18 ⋅ 0

Go开发实战

写这本书主要是灵感来自于: https://github.com/thekarangoel/Projects 然后我就想到了当初做PHP的时候,也有类似的项目,觉得golang也可以实现一个类似的书籍,暂且把书名定为《Go实战开发...

astaxie ⋅ 2013/08/05 ⋅ 0

JavaScript 基础操作封装函数--icewood

icewood简介 icewood是一个为javascript提供基础操作封装函数的类库. icewood是一个为javascript提供基础操作封装函数的类库.封装了数组字符串数字的很多操作. icewood以易学为原则,以程序员...

匿名 ⋅ 2017/03/03 ⋅ 0

《.Net 系列》- 目录

基础 《.Net基础 系列》- 正则 《.Net基础 系列》- 枚举 《.Net基础 系列》- IO操作 《.Net基础 系列》 - Linq & Lambda & t-Sql 框架 《.Net框架 系列》- 单元测试框架NUnit 《.Net框架 系列...

Kimisme ⋅ 2017/12/28 ⋅ 0

android基础知识02——线程安全4:HandlerThread

android的UI操作不是线程安全的,同时也只有主线程才能够操作UI,同时主线程对于UI操作有一定的时间限制(最长5秒)。为了能够做一些比较耗时的操作(比如下载、打开大文件等),android提供...

迷途d书童 ⋅ 2012/03/23 ⋅ 0

遇到一个需求,求思路解答

系统的数据缓存处理子系统中数据缓存基础处理模块提供基础的数据缓存的管理、加载和获取接口。 系统元数据信息处理模块,在数据缓存基础处理模块提供的数据管理、加载和获取接口的基础上,进...

雪山一颗松 ⋅ 2011/12/21 ⋅ 0

ylb: 数据库操作方法基础

数据库操作方法基础。 ----------试图操作(view)-----------------------创建视图create view titles_viewasselect title,type from titles--调用视图select * from titles_view--删除视图d......

吞吞吐吐的 ⋅ 2017/10/18 ⋅ 0

.NET简谈互操作(二:先睹为快)

互操作系列文章: .NET简谈互操作(一:开篇介绍) .NET简谈互操作(二:先睹为快) .NET简谈互操作(三:基础知识之DllImport特性) .NET简谈互操作(四:基础知识之释放非托管内存) .NET简谈互操作...

王清培 ⋅ 2011/06/24 ⋅ 0

使用Netdom工具查看操作主机角色

使用命令行工具查看和更改操作主机角色   有多个工具可以实现在命令行下查看操作主机角色,下面只列出几种常见方法   注意,下面对应的工具有些需要安装Win2003 Support Tools工具   1...

derek_zhang ⋅ 2011/10/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部