我正在使用GraphX测试PageRank应用程序。这是我的spark应用程序的相关代码。
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个任务。为什么呢?
注意:由于我修改了某些GraphX scala文件以便将getPreferredLocations函数添加到VertexRDD和EdgeRDD,因此在主Spark代码库中,指向UI中出现的scala源文件的行号可能有所不同。