【问题标题】:spark graphx -creating list of graphs objects in scalaspark graphx - 在 scala 中创建图形对象列表
【发布时间】:2015-08-10 14:27:52
【问题描述】:

我想让图中的边成为子图。然后我想根据一个标准加入这些子图并形成派系。基本上我想知道如何创建Graph 对象列表。

如何在 Scala 中使用 Apache Spark 的 Graph X API 实现这一点?

import org.apache.spark._
import org.apache.spark.graphx._
import org.apache.spark.rdd.RDD
import scala.collection.mutable.ArrayBuffer

val cliques = ArrayBuffer[Graph[(String, Int),Int]]()

var edges = sc.textFile("edges.g3").map { 
  line => var fields = line.split("\\s+")

  println(line)

  val vertexArray = Array(
  (fields(0).toLong, (fields(0), 1)),
  (fields(1).toLong, (fields(1), 1)))

  val edgeArray = Array(
  Edge(fields(0).toLong,fields(1).toLong,0)
  )

  val vertexRDD: RDD[(Long, (String, Int))] = sc.parallelize(vertexArray)
  val edgeRDD: RDD[Edge[Int]] = sc.parallelize(edgeArray)

  val graph: Graph[(String, Int),Int] = new Graph(vertexRDD, edgeRDD)

  cliques += graph

}

此代码给出了类Graph 是抽象的错误,因此无法实例化。有没有办法创建图表列表?

如何实例化 Graph 对象是我的主要问题?

【问题讨论】:

    标签: scala apache-spark spark-streaming spark-graphx


    【解决方案1】:

    您需要使用Graph(vertexRDD, edgeRDD) 而不是new Graph(vertexRDD, edgeRDD)。查看documentation 中的一些示例。

    【讨论】:

    • 我这样做了,但不知何故这不起作用。最初我正在创建一个仅包含一条边的图表列表。但是您的代码所做的是它引用同一个图表并且所有图表都包含所有边缘。我猜列表中的所有项目都引用了相同的图
    • 您的代码清单有new Graph 而不是Graph,并且您提到它会给出Graph 是抽象的错误消息。因此我的回答。如果您还有其他问题,请随时提出!
    • thanks.but 那不是我想要的,很抱歉错误地提出了这个问题
    猜你喜欢
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多