考虑到具有14,000个顶点和14,000个边的图,我想知道为什么GraphX比图的Java实现花费更多的时间来获取从顶点到叶的所有路径吗?
java实现:几秒钟
Graphx实现:几分钟
spark GraphX是否真的适合这种治疗?
我的系统: i5-7500 @ 3.40GHz, 8GB RAM
预凝胶的算法:
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
答案 0 :(得分:0)
在Graphx上实现某些算法时,这发生在我身上,我相信当跨多个计算机拆分大图时,GraphX非常适合于分布式环境。 但是,当您说使用一个节点时,您是否检查了使用的工作人员数量?多少执行人?每个应聘者使用的内存量?这些配置参数在提高或降低GraphX应用程序的性能中无疑起着重要的作用。