graphframes是基于PySpark DataFrame的网络分析工具。以下代码是教程subgraphing例的修改后的版本:PySpark GraphFrame的正确子图
from graphframes.examples import Graphs
import graphframes
g = Graphs(sqlContext).friends() # Get example graph
# Select subgraph of users older than 30
v2 = g.vertices.filter("age > 30")
g2 = graphframes.GraphFrame(v2, g.edges)
人们会期望新的曲线图中,g2
将包含更少的节点和更少的边缘,相对于原来的,g
。 然而,这不是这种情况:
print(g.vertices.count(), g.edges.count())
print(g2.vertices.count(), g2.edges.count())
给出的输出:
(6, 7)
(7, 4)
显而易见的是,所得到的曲线图中包含不存在的节点的边。 更令人不安的是g.degrees
和g2.degrees
是相同的。这意味着至少有一些图形功能会忽略节点信息。有没有一种好方法可以确保GraphFrame
只使用提供的nodes
和edges
参数的交集创建 ?
>但似乎过滤器后的顶点数是正确的? 它是,但不是边缘的数量。删除顶点应该也会导致删除一些边缘 –