Я использую Apache Spark-GraphFrames, используя Scala в следующем коде, я применяю BFS на приведенном выше коде и пытаюсь найти расстояние между Vertice 0 до 100.Apache-Spark Графический кадр очень медленный на BFS
import org.apache.spark._
import org.graphframes._
import org.graphframes.GraphFrame
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.SQLContext
object SimpApp{
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("SimpApp")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val nodesList = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").load("CSV File Path")
val edgesList= sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").load("CSV File Path")
val v=nodesList.toDF("id")
val e=edgesList.toDF("src", "dst", "dist")
val g = GraphFrame(v, e)
var paths: DataFrame = g.bfs.fromExpr("id = 0").toExpr(s"id = 100").maxPathLength(101).run()
paths.show()
sc.stop()
}
}
Soucre Node: 0 Destination Node: 100
Вершины Список приведен ниже
id
0
1
2
3
.
.
.
up to
1000
Вот список Edges
src dst dist
0 1 2
1, 2, 1
2, 3, 5
3, 4, 1
4, 5, 3
5, 6, 3
6, 7, 6
. . .
. . .
. . .
up to
999, 998, 4
Но проблема с вышеуказанным кодом заключается в том, что он занимает большое количество времени только для выполнения для вершины от 0 до 100, поскольку он работал 4 часа, но нет выхода. Над кодом Я бегу на одиночной машине имеющей RAM 12 GB.
Не могли бы вы посоветовать мне ускорить и оптимизировать код.