如何在pysp上并行化python代码

2024-10-02 02:40:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python构建和可视化networkx广告图。现在的问题是,我不知道是否可以在spark上应用networkx。我想确认networkx是并行处理。图形存储在HDFS上,需要查询,结果可视化。我是否应该像graphx那样使用spark库,尽管graphx对我来说很难,而且它没有提供可视化功能,所以我更喜欢使用networkx,它更简单。谢谢

import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import pylab

# directed graph
G = nx.DiGraph()

# undirected graph G = nx.Graph()

G.add_edges_from([('A', 'B'),('C','D'),('G','D')], weight=1,complementray= 1)
G.add_edges_from([('D','A'),('D','E'),('B','D'),('D','E')], weight=2,complementray= 0)
G.add_edges_from([('B','C'),('E','F')], weight=3,complementray= 1)
G.add_edges_from([('C','F')], weight=4,complementray= 0)


#val_map = {'A': 1.0,
#                   'D': 0.5714285714285714,
#                              'H': 0.0}
val_map = {'A': 1.0, 'D': 0.5714285714285714, 'H':0.0}

values = [val_map.get(node, 0.45) for node in G.nodes()]
edge_labels=dict([((u,v),d['weight'])
                 for u,v,d in G.edges(data=True)])
node_labels=dict([(n)
                 for n in G.nodes(data=True)])
red_edges = [('C','D'),('D','A')]
edge_colors = ['black' if not edge in red_edges else 'red' for edge in G.edges()]

pos=nx.spring_layout(G)
nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)
nx.draw_networkx_labels(G,pos,node_labels=node_labels)

#arrows=True for directed graph without calling the G = nx.DiGraph()
nx.draw(G,pos, node_color = values, node_size=1500,edge_color=edge_colors,edge_cmap=plt.cm.Reds)
pylab.show()

Tags: infromposimportnetworkxaddnodefor
1条回答
网友
1楼 · 发布于 2024-10-02 02:40:39

我在2015年对图形库(SNAP vs Igraph vs GraphX)做了一些比较,这是我可以分享的。在

如果您想在Spark中工作,最好学习GraphX来利用并行处理。否则,只需尝试找到一台内存更大的机器并使用NetworkX。在

我们最终在一个像样的桌面(28gbram)上使用了igraph+SNAP的组合,并制作了一些定制的启发式算法来处理大约20M节点和300M++边缘。在那一点上,网络的可视化根本没有任何意义(20M个节点….),我们更感兴趣的是分析我们的用户群(telco)内的社区,所以总的来说一切都没问题。我们没有使用GraphX,因为它在那个时候相对较新,也没有多少最先进的算法可用。在

相关问题 更多 >

    热门问题