使用graphframe和pyspark在有向图中查找循环(​​电路,闭环)

时间:2019-09-05 15:37:23

标签: python apache-spark pyspark networkx graphframes

我试图在非常大的有向图数据集中找到闭环,并希望通过PySpark在Spark中实现。对于其他图形分析,我已经在使用图形框架,但是我不知道如何实现属于电路的顶点/边的提取和标记。 有人已经在Spark中大规模实施了这样的问题吗?

使用python模块networkx可以轻松实现该问题,并且看起来像

import networkx as nx
import matplotlib.pyplot as plt

G=nx.DiGraph()
# cycles
nx.add_cycle(G,[1,2,3,4]) # cycle 1
nx.add_cycle(G,[5,6,7,8]) # cycle 2
G.add_edge(6,8) # nested cycle 3
G.add_edge(11,11) # self loop 4
# some connections between
G.add_edge(0,1)
G.add_edge(4,5)
G.add_edge(8,9)
G.add_edge(9,10)
G.add_edge(9,11)

print(list(nx.simple_cycles(G)))
nx.draw(G, with_labels=True, font_weight='bold')

这将导致以下结果

[[11], [1, 2, 3, 4], [8, 5, 6], [8, 5, 6, 7]]

显示所有4个周期 image of this graph with cycles

如何实现此功能,使其可以在Spark上扩展? 其余的数据转换是在Python中使用Spark SQL /数据框和图形框实现的

0 个答案:

没有答案