如何循环Scala中的每一行

时间:2017-07-11 13:32:33

标签: scala hadoop apache-spark

我是Scala的初学者,我想循环浏览我正在阅读的每一行,如下所示:

val data = sc.textFile("D:/Data.csv")

Data.csv如下所示:

1,462,0,NA,0,1,0,Friday,1,5
1,147,33,NA,0,1,0,Friday,1,5
1,105,58,NA,0,1,0,Friday,1,5
1,276,96,NA,0,1,0,Friday,1,5
1,466,1,NA,0,1,0,Friday,1,5
1,466,1,NA,0,1,0,Friday,1,5
1,466,1,NA,0,1,0,Friday,1,5

我想迭代上面csv中的每一行,并在每行中打印第一列和第三列值。感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

val data = sc.textFile("D:/Data.csv")

data.map(_.split(','))
    .foreach(r => println(r(0), r(2)))

上面的map调用会在逗号上拆分文件中的每一行,将每一行转换为Array[String]并创建RDD[Array[String]]:此RDD中的每个元素都是一行Array[String]列值。

foreach调用打印每行的第一和第三列值(即Array[String]中每个RDD中的第一个和第三个元素):

(1,0)
(1,1)
(1,1)
(1,33)
(1,1)
(1,58)
(1,96)