graphframes是一个基于 PySpark DataFrames 的网络分析工具。以下代码是教程子图示例的修改版本:
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