首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何用Scala在Spark GraphX中寻找特定节点与其相邻节点的交集

如何用Scala在Spark GraphX中寻找特定节点与其相邻节点的交集
EN

Stack Overflow用户
提问于 2019-08-20 12:40:03
回答 1查看 580关注 0票数 2

我是spark GraphX的新手,正在尝试分布式地计算特定节点(例如ID =1的节点)与spark graphx中的邻居之间的交集。

我已经用路径加载了边缘列表(sc,“GraphLoader.edgeListFile”)。然后,我使用collectNeighborIds找到节点ID =1的邻居id,并对其执行映射函数,以找到每个邻居并计算与选定节点( ID =1的节点)邻居的交集。下面是代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val graph = GraphLoader.edgeListFile(sc,path to edgelist)
val node_collect_neighborsId1 = graph.collectNeighborIds(EdgeDirection.Either).filter(x=> x._1 == 1)

val node1_neighbors_ID=node_collect_neighborsId1.flatMap(x=> x._2)

def compute_intersection (vertex :VertexId) = {


  var node2_collect_neighborsId: RDD[(VertexId, Array[VertexId])] = graph.collectNeighborIds(EdgeDirection.Either).filter(x=> x._1 == vertex)

  var node2_neighbors_ID=node2_collect_neighborsId.flatMap(x=> x._2)

  var intersect_two_node = node1_neighbors_ID.intersection(node2_neighbors_ID)

  (vertex, intersect)

}

val result = node1_neighbors_ID.map(compute_intersection)

我期望在最后,结果变量应该包含包含顶点id的行,顶点id是邻居的id,以及两组节点邻居之间的公共节点,我们称之为它们的交集。但是我不能把它们打印出来,看看里面是什么。请帮我解决这个计算交集和打印结果的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-21 11:18:12

不能生成RDD[RDD[T]]类型的结果。因此,您不应该为map中的每个邻居计算交集。

您可以使用aggregateMessages计算所有目标邻居的交叉点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def computeIntersection[VD, ED](graph: Graph[VD, ED], targetVertexId: Long): VertexRDD[List[Long]] = {
  //mark the target's neighbors
  val verticesWithTargetNeighborFlag = graph.aggregateMessages[Boolean](
    triplet => {
      if(triplet.srcId == targetVertexId && triplet.dstId != targetVertexId) {
        triplet.sendToDst(true)
      } else if(triplet.dstId == targetVertexId && triplet.dstId != targetVertexId) {
        triplet.sendToSrc(true)
      }
    },
    (msg1, msg2) => msg1 || msg2,
    TripletFields.None
  )
  val graphWithTargetNeighborFlag = Graph(verticesWithTargetNeighborFlag, edges)
  //collect intersection vertices for each target's neighbor
  val verticesWithIntersection = graphWithTargetNeighborFlag.aggregateMessages[List[Long]](
    triplet => if (triplet.srcAttr && triplet.dstAttr) { //both are target's neighbors
      triplet.sendToDst(List(triplet.srcId))
      triplet.sendToSrc(List(triplet.dstId))
    },
    (msg1, msg2) => msg1 ::: msg2,
    TripletFields.All
  )
  verticesWithIntersection
}

并且可以使用collect打印RDD元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rdd.collect().foreach(println)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57573911

复制
相关文章
寻找网络中的hub节点
其实转录组走到现在我总觉得少了点什么东西,后来才想起来是cytospace寻找hub基因
生信菜鸟团
2023/09/27
1.5K0
寻找网络中的hub节点
在scala中使用spark sql解决特定需求
Spark sql on hive的一个强大之处就是能够嵌在编程语言内执行,比如在Java或者Scala,Python里面,正是因为这样的特性,使得spark sql开发变得更加有趣。 比如我们想做一个简单的交互式查询,我们可以直接在Linux终端直接执行spark sql查询Hive来分析,也可以开发一个jar来完成特定的任务。 有些时候单纯的使用sql开发可能功能有限,比如我有下面的一个功能: 一张大的hive表里面有许多带有日期的数据,现在一个需求是能够把不同天的数据分离导入到不同天的es索引里面,方
我是攻城师
2018/05/14
1.3K0
寻找链表中环的入口节点
如果一个链表中包含环,如何找出环的入口节点?本文将分享一种解决方案,欢迎各位感兴趣的开发者阅读本文。
神奇的程序员
2022/10/30
9070
寻找链表中环的入口节点
在scala中使用spark sql解决特定需求(2)
接着上篇文章,本篇来看下如何在scala中完成使用spark sql将不同日期的数据导入不同的es索引里面。 首下看下用到的依赖包有哪些: 下面看相关的代码,代码可直接在跑在win上的idea中,使用的是local模式,数据是模拟造的: 分析下,代码执行过程: (1)首先创建了一个SparkSession对象,注意这是新版本的写法,然后加入了es相关配置 (2)导入了隐式转化的es相关的包 (3)通过Seq+Tuple创建了一个DataFrame对象,并注册成一个表 (4)导入spark sql后,执行了一
我是攻城师
2018/05/14
7980
oracle递归寻找父节点
本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处
overme
2022/01/15
1.6K0
oracle递归寻找父节点
大数据技术之_19_Spark学习_05_Spark GraphX 应用解析小结
========== Spark GraphX 概述 ========== 1、Spark GraphX是什么?   (1)Spark GraphX 是 Spark 的一个模块,主要用于进行以图为核心的计算还有分布式图的计算。   (2)GraphX 他的底层计算也是 RDD 计算,它和 RDD 共用一种存储形态,在展示形态上可以以数据集来表示,也可以图的形式来表示。
黑泽君
2019/05/14
8780
Spark web端查看节点
访问http://节点ip:8080/cluster找到对应的application_id
平凡的学生族
2020/06/23
9850
单链表:在带头节点单链表中删除(minv, maxv)中的所有节点
链表节点删除,只有标记待删除节点的前驱节点即可; [注]:如果不是带有节点设置一个虚拟节点即可,返回时返回dummy->next。
lexingsen
2022/02/24
1.7K0
在美国国会图书馆标题表的SKOS上运行Apache Spark GraphX算法
这是Bob DuCharme的一篇客串文章。
Steve Wang
2018/01/29
1.9K0
在美国国会图书馆标题表的SKOS上运行Apache Spark GraphX算法
Spark 生态系统组件
Spark 生态系统以Spark Core 为核心,能够读取传统文件(如文本文件)、HDFS、Amazon S3、Alluxio 和NoSQL 等数据源,利用Standalone、YARN 和Mesos 等资源调度管理,完成应用程序分析与处理。这些应用程序来自Spark 的不同组件,如Spark Shell 或Spark Submit 交互式批处理方式、Spark Streaming 的实时流处理应用、Spark SQL 的即席查询、采样近似查询引擎BlinkDB 的权衡查询、MLbase/MLlib 的机器学习、GraphX 的图处理和SparkR 的数学计算等,如下图所示,正是这个生态系统实现了“One Stack to Rule Them All”目标。
博文视点Broadview
2020/06/12
1.9K0
Spark 生态系统组件
安装和配置Spark(单节点)
Apache Spark被称为第三代大数据处理平台,也当前应用最广泛的大数据处理方案,这篇文章将介绍如何在Linux系统(Cent OS7)上以单机模式(Stand alone)模式安装Apache Spark。当前的最新稳定版是2.3.1。
张子阳
2018/09/28
3.8K0
安装和配置Spark(单节点)
图网络中不同相邻节点的权重学习;图上的对比学习
Node2Seq: Towards Trainable Convolutions in
Houye
2021/02/24
1.7K0
图网络中不同相邻节点的权重学习;图上的对比学习
算法练习(11) - 寻找相交链表的相交节点
将长度比较长的链表指针提前赶到短链表的头结点位置,然后2个指针以同样步伐一步一步往下走,直到找到相交节点或返回空值
惊羽-布壳儿
2022/06/15
2980
算法练习(11) - 寻找相交链表的相交节点
区块链中的全节点与轻量级节点
在加密货币中,任何联接到网络的计算机都被称为节点。在区块链中,存在冗余备份现象。也就是说,假定全部节点都需求保存全网的全部生意等数据信息,必然会呈现一些坏处。例如,假定用户想要为项目开发创立自己的区块链节点,他们不需求参与一同过程,那么数据同步将是一项特别巨大的使命,既需求时间,也需求资源。 全部节点: 在比特币中,有一种节点叫做全节点,不只存储全网的生意数据,还能够完毕相关验证生意,独立完毕与对等节点的联接。也就是说,这类节点在本地坚持了一个无缺的区块链网络,在这个网络上能够进行任何查询、生意验证和广播。由于这种节点的存在,去中心化成为可能,区块链网络更加安全。 永久在线,最重要的是参与发掘,找到最长的规则链,辨认分叉。 轻量级节点 在区块链网络中,merkle-tree保存当时块中全部事务的根哈希,它存储在块头中。事务内容的任何改动都将改动根散列,然后改动区块链结构而且不被节点辨认。轻量级节点不需求保存全部事务内容。运用merkle树的特性,只需求包括块头和与自身相关的生意明细,经过Merkle证明判别生意是否在当时区块链生意列表中。 轻量级节点并不总是在线。与全节点不同,它们只能检测哪个是最长的链,但无法知道是否是最长的合法链,由于轻量级节点无法验证大多数生意的合法性,也无法验证区块链网发布的区块的正确性。
v-longbatuiguang2
2022/05/05
2.4K0
区块链中的全节点与轻量级节点
Java selenium -父子、兄弟、相邻节点定位方式详解
1.//td[contains(text(),'2104191603')]/../td[1]
Meccer
2021/05/07
1.7K0
golang刷leetcode 技巧(73) 特定深度节点链表
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
golangLeetcode
2022/08/02
1690
适合小白入门Spark的全面教程
1.实时分析 在我们开始之前,让我们来看看美国社交媒体比较有名的企业每分钟产生的数据量。
用户1410343
2018/08/16
6.5K0
适合小白入门Spark的全面教程
Apache Spark:大数据时代的终极解决方案
Apache Spark是基于Hadoop MapReduce的数据分析引擎,它有助于快速处理大数据。它克服了Hadoop的限制,正在成为最流行的大数据分析框架。
不高不富不帅的陈政_
2018/05/23
1.8K0
Apache Spark:大数据时代的终极解决方案
LeetCode 1469. 寻找所有的独生节点
二叉树中,如果一个节点是其父节点的唯一子节点,则称这样的节点为 “独生节点” 。 二叉树的根节点不会是独生节点,因为它没有父节点。
Michael阿明
2020/07/13
6480
jquery 元素节点操作 - 创建节点、插入节点、删除节点
前面的篇章对于jquery的元素操作大部分是使用html()的方式来操作,这种直接使用字符串创建的方式也是性能最高的。
Devops海洋的渔夫
2019/05/31
9K0

相似问题

过滤节点与其传出链路及其相邻节点的关系

10

GraphX不能正常工作Spark / Scala

14

如何用空向量表访问节点的相邻节点

111

Spark Scala GraphX:在地图函数中调用最短路径

10

在Gremlin中获取与子节点相邻的节点

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文