我的数据如下:
1,Bob,300
2,汤姆200
3,山姆400
我的预期输出是:
(1,1)
(2,2)
(3,3)
(1,鲍勃)
(2,汤姆)
(3,Sam)
(1,300)
(2,200)
(3,400)
我是scala
的初学者,我需要逻辑方面的帮助。
以下是我尝试过并得到的输出:
val data1 = file.map(x => {
for(i <- 0 to 2) {
for(j <- 0 to 2) {
x(i) -> x(j)
}
}
})
这就是我得到的:
data1: org.apache.spark.rdd.RDD[Unit] = MapPartitionsRDD[26] at map at <console>:26
scala> data1.collect
res23: Array[Unit] = Array((), (), ())
答案 0 :(得分:0)
您使用的for
循环没有返回值,这就是为什么您获得RDD[Unit]
的原因。
相反,您可以将Range与for comprehension结合使用,如下所示:
val data1 = file.map(x => {
for {
i <- Range(0,3)
j <- Range(0,3)
} yield {
x(i) -> x(j)
}})