如何从顶点输入文件创建 VertexRDD?

How to create VertexRDD from vertex input files?

我有一个这样的顶点输入文件:

(1L,(0.5,0.5))
(2L,(0.25,0.0625))
(3L,(0.125,0.125))
(4L,(0.0625,0.0625))
(5L,(0.0625,0.25))

我要将其转换为 RDD[(Long, Array[Double])]

我知道这个方法有效:

val Vertices=sc.makeRDD(Array((1L,Array(0.5,0.5)),(2L,Array(0.25,0.0625)),(3L,Array(0.125,0.125)),(4L,Array(0.0625,0.0625)),(5L,Array(0.0625,0.25))))

但问题是我要从文本文件中获取数据。

我已经尝试使用:

val vertices: RDD[(VertexId, Array[Double])] = sc.textFile("ads/tes").map { line =>
  val row = line.split("[\r\n]+")
  (row(0).toLong, Array(row(1).toDouble,row(2).toDouble))
}

但我收到 java.lang.NumberFormatException 错误,这让我很困惑。谁能帮我?感谢任何努力,谢谢!

您要做的是将每一行分成三个数字。使用 map 您将分别处理 RDD 中的每一行,但是,在您当前的代码中,您尝试拆分 "[\r\n]+" (换行符),这是不正确的。

相反,首先删除所有不需要的字符,然后在 , 上拆分。代码将是:

val vertices: RDD[(VertexId, Array[Double])] = sc.textFile("ads/tes").map { line =>
  val row = line.replaceAll(["\(\)L"], "").split(",")
  (row(0).toLong, Array(row(1).toDouble, row(2).toDouble))
}