Производительность Spark GraphX ​​в DFS по сравнению с простой реализацией Java DFS - PullRequest
0 голосов
/ 10 декабря 2018

Рассматривая граф с 14 000 вершин и 14 000 ребер, я удивляюсь, почему GraphX ​​требует гораздо больше времени, чем реализация графа java, чтобы получить все пути от вершины до листа?

Реализация java:Несколько секунд

Реализация Graphx: несколько минут

Действительно ли Spark GraphX ​​действительно подходит для этого вида лечения?

Моя система: i5-7500 @ 3,40 ГГц, 8 ГБ ОЗУ

Алгоритм Прегеля:

val sourceId: VertexId = 42 // The ultimate source
  // Initialize the graph such that all vertices except the root have canReach = false.
  val initialGraph: Graph[Boolean, Double]  = graph.mapVertices((id, _) => id == sourceId)
  val sssp = initialGraph.pregel(false)(
    (id, canReach, newCanReach) => canReach || newCanReach, // Vertex Program
    triplet => {  // Send Message
      if (triplet.srcAttr && !triplet.dstAttr) {
        Iterator((triplet.dstId, true))
      } else {
        Iterator.empty
      }
    },
    (a, b) => a || b // Merge Message

1 Ответ

0 голосов
/ 11 декабря 2018

Со мной при реализации некоторых алгоритмов в Graphx случилось, что я считаю, что GraphX ​​хорошо адаптирован для распределенной среды, когда у вас большие графы разбиты по нескольким машинам.Но теперь, когда вы говорите, что используете один узел, вы проверили количество используемых работников?количество исполнителей?Объем памяти, используемой каждым автором?Эти параметры конфигурации определенно играют важную роль в увеличении или уменьшении производительности вашего приложения GraphX.

...