У меня есть набор данных, представляющий собой файл csv/txt, представляющий сеть. Каждая строка в файле содержит два имени узла, разделенных запятой. Мой файл данных имеет контакты около 330 тыс. Узлов и около 550 тыс. Краев. Я пытаюсь создать только очень элементарный график этого (да, я знаю, что это будет очень суматоху), используя следующий код:Как отслеживать состояние создания диаграммы networkx?
import networkx as nx
import matplotlib.pyplot as plt
import sys
import numpy as np
f = open('dataFile.txt', 'rb')
G = nx.read_edgelist(f, delimiter=',', nodetype=str)
f.close()
print(nx.number_of_nodes(G))
print(nx.number_of_edges(G))
plt.figure(1)
nx.draw(G)
plt.savefig("graph.pdf")
Я бегу это на m4.4xlarge например AWS EC2 и это pegging на 100% процессоров и только 1% памяти.
Я скептически отношусь к этому, так как я думал, что networkx имеет интенсивную память, а не процессор. Прямо сейчас он вращается по команде nx.draw. Есть ли способ отслеживать, насколько далеко он находится в генерации графиков?
Я принял ваш совет и пошел дальше, чтобы попробовать его в GraphX. Я не знаю много scala или искры (пока), но я смог сделать график и подсчитал соответствующее количество ребер и вершин. Определенно кривая обучения, но она работает! Спасибо! –
Существует API-интерфейс python. Вам не нужно использовать Scala. Spark - отличный инструмент для машинного обучения и большой аналитики данных. Я легко обрабатываю граф миллиардов краев :) – Kikohs
Его правда, но pyspark еще не поддерживает GraphX. Следовательно, scala. –