Я тестирую приложение PageRank с использованием GraphX. Вот соответствующий код моего искрового приложения.
val g: Graph[Int, Int] = GraphLoader.edgeListFile(
sc,
path,
edgeStorageLevel = StorageLevel.MEMORY_AND_DISK,
vertexStorageLevel = StorageLevel.MEMORY_AND_DISK
)
var strategy = PartitionStrategy.fromString("RandomVertexCut")
val gp = g.partitionBy(strategy, numPartitions)
println("Starting PageRank")
val ranks_init = gp.pageRank(0.0001).vertices
Я устанавливаю numPartitions
на 8
. Если я вижу Spark UI, чтобы наблюдать за заданиями и задачами для моего приложения. Вот что я вижу:
Для каждого задания, помеченного как fold at ...
, вот этапы, которые я вижу:
Я ожидал бы, что на всех этапах будет 8 задач, поскольку я установил число разделов на 8. Однако, кроме одного этапа, на каждом другом этапе есть только 2 задачи. Почему это так?
Примечание. Номера строк, относящиеся к исходным файлам scala, отображаемым в пользовательском интерфейсе, могут отличаться для основной базы кода искры, поскольку я изменил некоторые файлы scala GraphX, чтобы добавить функцию getPreferredLocations в VertexRDD и EdgeRDD.