1

有什么方法可以更改边缘的 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 不会指向不存在的顶点。此外,边缘属性的更改适用于该段代码,只有 id 不会更改。

4

1 回答 1

1

不, ,与( , )mapEdges上的其他转换相同,仅用于映射属性。引用官方文档GraphImplmapTripletsmapVertices

使用 map 函数转换每个边缘属性,一次将整个分区传递给它。(...) 它应该在每条边的新值上返回一个新的迭代器。新迭代器的元素必须与旧迭代器的元素一一对应。

据我所知,目前没有办法在不重新创建整个图表的情况下修改源或目标。

于 2015-07-31T10:20:08.747 回答