如何从具有可变列大小的输入文件创建边缘RDD?

时间:2019-05-01 00:40:05

标签: scala apache-spark spark-graphx

我正在尝试读取一个非常大的图形文件,其格式为:

    1
    2,3
    3,2,1
    7,4,3
    4,3,4,6
    5,6
    6,5,7,1,5,3,4,2

我正在尝试创建边缘RDD,但是我一直无法正确读取文件并将值解析为正确的边缘。以下是控制台中的错误:

found   : Unit
required: (org.apache.spark.graphx.VertexId,     org.apache.spark.graphx.VertexId)
for(i <- 1 to (a.length-1))
      ^

我不知道该怎么做。我们以前的列数是固定的,因此访问数据从来都不是问题,但由于现在每个列的大小都是动态的,所以我陷入了这一部分。

基本上,这个迷你项目的目标是找到输入图的连接组件。

我们非常感谢您的帮助。预先感谢。

    var graphData= sc.textFile(args(0));

    val edgesRdd: RDD[(VertexId, VertexId)] = 
      graphData.map(line => { val a=line.split(",")
                              for(i <- 1 to (a.length-1))
                                (Edge(a(0).toLong, a(i).toLong))
      })

    val graph= Graph.fromEdgeTuples(edgesRdd, 1);

    graph.triplets.collect.foreach(println);

我希望可以对RDD进行适当的格式以进行进一步的数据处理。

0 个答案:

没有答案