赞
踩
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[
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。