2016-06-03 3 views
1

В Spark GraphX ​​я использую graph.degrees.reduce((a,b) => if (a._2 > b._2) a else b), чтобы получить вершину наивысшей степени в графе LiveJournal [4 847 571 узел, 68 993 773 ребра].

Я пишу алгоритм для моего аналитического исследования по графику. Граф Живого Журнала, на котором я запускаю алгоритм, очень велик, моя машина навсегда выполняет этап сокращения! Поэтому мне было интересно, есть ли более эффективный и менее трудоемкий способ получить тот же результат линии выше.Получить вершину с наивысшей степенью большого графика в GraphX ​​

+1

, вероятно, будет трудно из-за того, что для этого был разработан граф, а ваш код прямо из руководства по графику. – alex9311

+0

Хотя я не могу говорить об этом конкретном алгоритме, я знаю, что некоторые алгоритмы «запаса» 'GraphX' не очень эффективны. Подробнее об этом см. Здесь: http://www.frankmcsherry.org/graph/scalability/cost/2015/01/15/COST.html –

ответ

1

На моем 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

+0

Я сделал то же самое с моим 8-ядерным ПК, назначив 6 ГБ бара драйвер в локальном режиме. Я забыл упомянуть выше, что я запускаю свой код из Eclipse (не искровой оболочки) как в локальном режиме (local [*]), так и в автономном режиме (я установил 4 рабочих кластера и передал искру: // xxxx: 7077 для SparkConf моего кода внутри Eclipse). Я не могу понять, где установить «-driver-memory» внутри Eclipse! потому что я знаю, что я не должен устанавливать его через SparkConf (согласно документации Spark). Кроме того, должен ли я устанавливать аргумент «executor.memory» для каждого из моих работников? и PLZ как? – HoussemKhe

+0

Не знаете, как много не использовать Eclipse. Вам не нужно создавать конфигурацию запуска, а затем вводить параметр -driver-memory в аргументах VM –

 Смежные вопросы

  • Нет связанных вопросов^_^