2017-07-11 87 views
-4

每一行我是一个初学者到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列和第3列的值。任何帮助表示赞赏。

+0

注意THA星火工作,RDD的有很大的不同来自普通的Scala代码。你的代码远程运行,你不能像平常那样使用循环。 – puhlen

+0

[我如何迭代apache spark(scala)中的RDD](https://stackoverflow.com/questions/25914789/how-do-i-iterate-rdds-in-apache-spark-scala) – stefanobaghino

回答

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)