我有一个像这样的输入文件
A,1
B,2
C,3
val data = sc.textFile("myfile.txt")
如何使此RDD采用此格式 data:RDD [(String,Int)]
我尝试了这个,但没有工作
case class foo (a: String, b: Int)
val data = sc.textFile("myfile.txt").map(
c => foo(c(0).toString, c(1).toInt))
答案 0 :(得分:0)
如果您想要rdd
类型RDD[(String,Int)]
,则应将输入映射到Tuple2[String, Int]
而不是foo
。喜欢这个
val data = sc.textFile("myfile.txt")
.map(line => line.split(","))
.map(s => (s(0), s(1).toInt))
(我添加了map
用于按","
分割您的数据,我想您可能忘记添加到您的示例中。
答案 1 :(得分:0)
我认为最易读的形式是:
sc.textFile("myfile.txt")
.map { line =>
val Array(first, second) = line.split(",")
Foo(first, second.toInt)
}
但这不会处理错误,Array(...)
和toInt
都可能失败。