如何从顶点输入文件创建 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))
}
我有一个这样的顶点输入文件:
(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))
}