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

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

(1L,(0.5,0.5))
(2L,(0.25,0.0625))
(3L,(0.125,0.125))
(4L,(0.0625,0.0625))
(5L,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,(5L,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错误,这使我感到困惑。谁能帮我?感谢您的努力!

laoshu8688 回答:如何从顶点输入文件创建VertexRDD?

您要执行的操作是将每行分成三个数字。使用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))
}
本文链接:https://www.f2er.com/3156730.html

大家都在问