spark进阶(九):GraphX使用

本文介绍了Spark的GraphX框架,它用于处理分布式图计算,扩展了Spark的RDD。GraphX中的核心概念包括Vertices、Edges和Triplets,分别代表顶点、边和三元组关系。内容涵盖了如何利用这些概念进行图构建、属性操作、过滤和重复边聚合等任务,特别适用于社交网络、推荐系统等领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GraphX是Spark中的一个分布式图计算框架,是对Spark RDD的扩展。这里所说的图并不是图片,而是一个抽象的关系网。例如,社交应用微信、QQ、微博等用户之间的好友、关注等存在错综复杂的联系,这种联系构成了一张巨大的关系网,我们把这个关系网称为图。GraphX目前适用于微信、微博、社交网络、电子商务等类型的产品,也越来越多地应用于推荐领域的人群划分、年龄预测、标签推理等。

Vertices、edges、triplets是Spark GraphX中3个最重要的概念。

  • Vertices对应的RDD名称为VertexRDD,VertexRDD继承自RDD[(VertexId, VD) ],RDD的类型是VertexId和VD,其中VD是属性的类型,也就是说,VertexRDD有ID和顶点属性。

  • Edges对应的是EdgeRDD,EdgeRDD继承的RDD的类型是Edge[ED],属性有3个:源顶点的ID、目标顶点的ID、边属性。

  • Triplets的属性有源顶点ID、源顶点属性、边属性、目标顶点ID、目标顶点属性,Triplets其实是对Vertices和Edges做了Join操作

一、简单使用

其实顶点和边都是RDD,通过顶点和边之间的关系构建的图其三元组关系也是一个RDD,都适用RDD的一些操作

/**
 * @author: ffzs
 * @Date: 2021/10/11 下午3:48
 */
object GraphX {
   
   
  def main(args: Array[String]): Unit = {
   
   

    val spark = SparkSession.builder
      .appName("SparkGraphXExample")
      .master("local[*]")
      .getOrCreate()

    val sc = spark.sparkContext
    sc.setLogLevel("WARN")

    val users:RDD[(VertexId, (String, String))] = sc.parallelize(Array(
      (3L, ("zhangsan", "student")),
      (2L, ("lisi", "prof")),
      (5L, ("wangwu", "prof")),
      (7L, ("zhaosi", "postdoc")),
    ))

    val relationships: RDD[Edge[String]] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值