Scala spark和graphx问题中foreach循环中的子图

Scala spark和graphx问题中foreach循环中的子图,scala,foreach,network-programming,apache-spark,spark-graphx,Scala,Foreach,Network Programming,Apache Spark,Spark Graphx,希望有人能帮忙 我正在尝试编写一个程序,它需要对连接到graphx网络中每个节点的每个边缘ID执行一个函数 为了做到这一点,我想迭代每个节点并识别所有连接到它的边,然后我想用一个函数迭代每个边。在foreach循环中执行任何类型的子图或过滤时,我的问题似乎都会出现 例如,下面的代码应该输出连接到节点的每条边的id graph.vertices.foreach { network => val KeyVert = network._1 val EGraph = graph.su

希望有人能帮忙

我正在尝试编写一个程序,它需要对连接到graphx网络中每个节点的每个边缘ID执行一个函数

为了做到这一点,我想迭代每个节点并识别所有连接到它的边,然后我想用一个函数迭代每个边。在foreach循环中执行任何类型的子图或过滤时,我的问题似乎都会出现

例如,下面的代码应该输出连接到节点的每条边的id

graph.vertices.foreach {
  network => 
    val KeyVert = network._1
val EGraph = graph.subgraph(e => e.dstId == KeyVert)
println(KeyVert)
EGraph.edges.foreach(println)
}
但是,只有在添加collect函数以从rdd收集图形数据时,它才会起作用

graph.vertices.collect.foreach {
  network => 
    val KeyVert = network._1
val EGraph = graph.subgraph(e => e.dstId == KeyVert)
println(KeyVert)
EGraph.edges.foreach(println)
}

网络太大,无法收集边缘数据,因此非常感谢您的帮助。

em…问题是您不了解驱动程序和工作程序…当您调用collect函数时,所有数据都收集到驱动程序,然后foreach函数看起来工作正常。实际上,
graph.vertices.foreach
没有报告任何错误,对吗?因为它工作得很好,只需在工人日志中打印信息。你知道我说了什么吗?希望有帮助。

em…问题是您不了解驱动程序和工作程序…当您调用collect函数时,所有数据都收集到驱动程序,然后foreach函数看起来工作正常。实际上,
graph.vertices.foreach
没有报告任何错误,对吗?因为它工作得很好,只需在工人日志中打印信息。你知道我说了什么吗?希望能有帮助

graph.vertices.map {
  network => 
    val KeyVert = network._1
  val EGraph = graph.subgraph(e => e.dstId == KeyVert)
  println(KeyVert)
  EGraph.edges.map(println)
}
那可能会解决你的问题

那可能会解决你的问题