【发布时间】:2020-03-02 06:12:54
【问题描述】:
我有一个这样的顶点输入文件:
(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 错误,这让我感到困惑。谁能帮我?感谢任何努力谢谢!
【问题讨论】:
-
您能否分享您用作输入的文件的示例数据?
-
它在问题的顶部 (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))
-
是的,我看到了。但取决于它在您的数据源上的方式将取决于拆分是否正确。我认为可能存在问题。
-
对不起,我不明白你的意思是“它在你的数据源上的情况”是什么意思,即整个数据,数据就是这样。它存储在本地
-
纯文本中用于分隔值的字符是什么? (逗号、制表符等)基于此,您的拆分也应该使用它。另一件事是,当您使用
.textFile时,您将获取文件中的每一行,因此在您的.split中您不需要\\n。基本上,NumberFormatException可能会被引发,因为来自.split的字符串数组可能不正确。
标签: scala apache-spark rdd spark-graphx