有没有办法改变边的srcId和dstId的值,因为当我这样做时:
val newGraph = graph.mapEdges(
e =>
if(//a condition here) {
e.srcId*0 + //a value
e.dstId*0 + //another value
e.attr*1.0 //so that the attribute will remain the same
}
else {
//another piece of code here
}
)
newGraph的srcId和dstId与graph具有相同的值。请注意,if语句中的条件100%(已测试),并且id的新值确实存在于图形中,这意味着新id不会指向不存在的顶点。此外,edge属性的更改适用于该段代码,只有id不会更改。
答案 0 :(得分:1)
不,mapEdges
,与GraphImpl
(mapTriplets
,mapVertices
)上的其他转换相同,仅用于映射属性。引用official documentation:
使用map函数转换每个edge属性,一次传递整个分区。 (...)并且它应该在每个边的新值上返回一个新的迭代器。新的迭代器元素必须与旧的迭代器元素一一对应。
据我所知,目前无法在不重新创建整个图形的情况下修改源或目的地。