В Spark GraphX я использую graph.degrees.reduce((a,b) => if (a._2 > b._2) a else b)
, чтобы получить вершину наивысшей степени в графе LiveJournal [4 847 571 узел, 68 993 773 ребра].
Я пишу алгоритм для моего аналитического исследования по графику. Граф Живого Журнала, на котором я запускаю алгоритм, очень велик, моя машина навсегда выполняет этап сокращения! Поэтому мне было интересно, есть ли более эффективный и менее трудоемкий способ получить тот же результат линии выше.Получить вершину с наивысшей степенью большого графика в GraphX
ответ
На моем MacBook (8 ядер) требуется меньше минуты для запуска. Мне нужно было позволить 4G памяти драйвера работать в локальном режиме.
Я начинаю искровой скорлупу, как это:
bin/spark-shell --driver-memory 4g
Затем выполните следующие действия:
import org.apache.spark.graphx._
val graph = GraphLoader.edgeListFile(sc, "soc-LiveJournal1.txt")
val output = graph.degrees.reduce((a,b) => if (a._2 > b._2) a else b
Выход выглядит следующим образом:
scala> output
res0: (org.apache.spark.graphx.VertexId, Int) = (10009,22889)
Примечание: это использование Спарк 1.6 .1
Я сделал то же самое с моим 8-ядерным ПК, назначив 6 ГБ бара драйвер в локальном режиме. Я забыл упомянуть выше, что я запускаю свой код из Eclipse (не искровой оболочки) как в локальном режиме (local [*]), так и в автономном режиме (я установил 4 рабочих кластера и передал искру: // xxxx: 7077 для SparkConf моего кода внутри Eclipse). Я не могу понять, где установить «-driver-memory» внутри Eclipse! потому что я знаю, что я не должен устанавливать его через SparkConf (согласно документации Spark). Кроме того, должен ли я устанавливать аргумент «executor.memory» для каждого из моих работников? и PLZ как? – HoussemKhe
Не знаете, как много не использовать Eclipse. Вам не нужно создавать конфигурацию запуска, а затем вводить параметр -driver-memory в аргументах VM –
, вероятно, будет трудно из-за того, что для этого был разработан граф, а ваш код прямо из руководства по графику. – alex9311
Хотя я не могу говорить об этом конкретном алгоритме, я знаю, что некоторые алгоритмы «запаса» 'GraphX' не очень эффективны. Подробнее об этом см. Здесь: http://www.frankmcsherry.org/graph/scalability/cost/2015/01/15/COST.html –