刚开始接触GraphX,拿到了一份类似用户关注的测试数据。
用户ID10000条,对应10000个节点。用户关系的数量不明。
数据格式如下:
建图代码如下:
import org.apache.spark.graphx.Edge import org.apache.spark.graphx.Graph val vertexRdd = sc.textFile("hdfs://ubt1:9820/WBNW/Vertex") val edgeRdd = sc.textFile("hdfs://ubt1:9820/WBNW/Edge") val users = vertexRdd.map(line => line.split(",")).map(parts => (parts(0).toLong, parts(1))) val follow_relation = edgeRdd.map(line => line.split(",")).map(parts => new Edge(parts(0).toLong,parts(1).toLong,parts(2).toLong)) val graph = Graph(users, follow_relation) val v_count = vertexRdd.count val e_count = edgeRdd.count val gv_count = graph.vertices.count val ge_count = graph.edges.count
输出结果如下:
发现边的数量在Rdd与Graph中相同,点却明显不一致。请问是什么原因,谢谢各位。
恩,原来是edgeRdd中有很多点是vertex中没有的,通过设置VD的defaultvaule再做filter得到没有属性的vertex数量正好为548529。疑惑解开了。