头歌:Spark GraphX—寻找社交媒体中的“影响力用户”

第1关:认识Pregel API


简介


Spark GraphX中提供了方便开发者的基于谷歌Pregel API的迭代算法,因此可以用Pregel的计算框架来处理Spark上的图数据。GraphX的Pregel API提供了一个简明的函数式算法设计,用它可以在图中方便的迭代计算,如最短路径、关键路径、n度关系等,也可以通过对一些内部数据集的缓存和释放缓存操作来提升性能。

任务描述


本关任务:使用pregel函数找到图1中距离Ann最远的顶点。


相关知识


Pregel API
在Pregel计算模式中,输入是一个有向图,该有向图的每一个顶点都有一个相应的独一无二的顶点ID。每一个顶点都有一些属性,这些属性可以被修改,其初始值由用户定义。每一条有向边都和其源顶点关联,并且也拥有一些用户定义的属性和值,并同时还记录了其目标顶点的ID。
Pregel运算执行一系列的超步(superstep),每一个超步就是一轮单独的迭代。在每个超步内部,每个顶点的计算都是并行的,每个顶点会接收到它的邻居们在上一轮超步发送的消息的总和,然后计算顶点属性的新值;此外,在超步迭代的最后一步, 每个顶点也会给它的邻居们发送消息。顶点也可以选择不发送消息;如果目标顶点没有从它的源顶点收到任何消息,它就不会参与下一个超步的运算。当没有消息发送时或是当前迭代次数大于默认迭代次数时,Pregel运算符终止迭代并返回一个新的图。

Pregel函数定义如下:
def pregel[A]
         (initialMsg: A,
          maxIter: Int = Int.MaxValue,
          activeDir: EdgeDirection = EdgeDirection.Out)
         (vprog: (VertexId, VD, A) => VD,
          sendMsg: EdgeTriplet[VD, ED] => Iterator[(VertexId, A)],
          mergeMsg: (A, A) => A)
         : Graph[VD, ED]

核心部分是三个函数:


(1)节点处理消息的函数vprog: (VertexId, VD, A) => VD
用户自定义的函数,运行于每个节点上,和输入消息进行计算,生成新的顶点值,在第一次迭代时,vprog在每个顶点上都执行一次,和默认输入消息进行计算,在之后的迭代时,vprog只会在接收到消息的顶点上执行。

(2)节点发送消息的函数sendMsg: EdgeTriplet[VD, ED] =>Iterator[(VertexId,A)]
用户自定义的函数,运行于每个活跃的边三元组上,产生发送给下一次迭代的消息。

(3)消息合并函数mergeMsg: (A, A) => A) 
用户自定义的函数,用于将两条发送给顶点的消息合并为一条消息。

第一个参数列表中的参数是完成一些配置工作&#x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/663076.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.4--汇编LED驱动程序

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

推开通用人工智能大门,多模态大模型是新一代人工智能技术范式

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

Flutter笔记:Widgets Easier组件库(8)使用图片

Flutter笔记 Widgets Easier组件库(8):使用图片 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…

Github 2024-05-02 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-02统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10PureBasic项目1Kubernetes: 容器化应用程序管理系统 创建周期:3618 天开发语言:Go协议类型:Apache License 2.0Star数量:106913 个…

ROS2专栏(三) | 理解ROS2的动作

​ 1. 创建一个动作 目标: 在ROS 2软件包中定义一个动作。 1.1 新建包 设置一个 workspace 并创建一个名为 action_tutorials_interfaces 的包: mkdir -p ros2_ws/src #you can reuse existing workspace with this naming convention cd ros2_ws/s…

动态规划-回文子串问题

文章目录 1. 回文子串(647)2. 最长回文子串(5)3. 分割回文串 IV(1745)4. 分割回文串 II(132)5. 最长回文子序列(516)6. 让字符串成为回文串的最少插入次数&am…

文心一言+Midjourny中文站

目录 你用过最好用的AI工具有哪些? 文心一言 Midjourney中文站 #你用过最好用的AI工具有哪些?# 你用过最好用的AI工具有哪些? 简介:目前市面上有很多新的AI工具:文心、天工、Midjourney等等,当然也有很大…

低代码工业组态数字孪生平台

2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量,引发各界关注。在探索构建新质生产力的重要议题中,数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为:生产力由生产…

万兴PDF专家 PDFelement Pro v10.3.8 破姐版!

🧑‍💻万兴PDF专家 PDFelement Pro v10.3.8 破姐版 (https://docs.qq.com/sheet/DRVVxTHJ3RXJFVHVr)

带你学C语言:结构体及其内存

目录 🍺0.前言 ✍1.结构体 👀1.1为何结构体 👀1.2结构体怎么声明 👀1.3结构体怎么创建 👀1.4结构体初始化与访问 ✋1.5匿名结构体问题 🙆1.6结构体的自我调用 🚝 2.结构体的内存对齐 &a…

Midjourney之绘画背景的选择

hello 小伙伴们,我是你们的老朋友——树下,今天分享Midjourney提示词中绘画背景的选择,话不多说,直接开始~ 对于背景的选择,Midjourney中主要体现在年代和所处的环境对绘画产生不同的影响 科技的发展,我们…

质因数分解(cpp实现)--一种快速求得一个数有多少个因子的黑魔法

前言 最近机试没少吃不会质因数分解的亏,用传统的求得因子个数只能过一点点…(ex, 20%) 质因数分解后,可以将因子问题转化为 集合的组合问题,因此会很快,目测是 l o g n log n logn (n是该整数的值)。 传统解法 假设输入整数的…