我正在使用Graphframe LPA来查找社区,但不知何故它没有给我预期的结果
graph_data = spark.createDataFrame([
("a", "d", "friend"),
("b", "d", "friend"),
("c", "d", "friend")
], ["src", "dst", "relationship"])
在这里,我的要求是为所有顶点 a、b、c 和 d 获取单个社区 ID,但我得到了两个不同的社区 ID,一个用于 a、b、c,一个用于 d 法典:
df1 = graph_data.selectExpr('src AS id')
df2 = graph_data.selectExpr('dst AS id')
vertices = df1.union(df2)
vertices = vertices.distinct()
edges = graph_data
g = GraphFrame(vertices, edges)
communities = g.labelPropagation(maxIter=5)
鉴于d
是一个根,它有一个单独的标签。若要完成单个标签,建议改用连接的组件,请参阅文档。
communities = g.connectedComponents()
注意:需要事先设置检查点目录。
sc.setCheckpointDir("some_path")