本帖重点关注scala以及兼容到spark平台上的数据集合,包括
Iterator
Seq
Array
Set
List
Tuple
RDD
DStream
1. Iterator 慎用
此类型循环事特别注意,由于就是follow Iterator的概念,所以遍历一次后,往往再遍历就为空Iterator了,例如:val mydata = Source.fromFile(".....").getLines()val MyRating = mydata.map{line=> val record = line.split("::") (record(0),record(1),record(2),record(3)) match {case (user,product,rate,timestamp)=> Rating(user.toInt,product.toInt,rate.toDouble) }}
此时MyRating的类型是Iterator,只要遍历后Iterator就为空了,不能再访问到数据
办法是可以转换为多种类型,toSeq 没问题
2. 转(k,v)类型的,多用于join操作
val movieData = Source.fromFile("/tmp/aaa/machine-learning/movielens/medium/movies.dat","ISO-8859-15").getLines()val movieList = movieData.map{ line=> val record = line.split("::") (record(0).toInt,record(1)) }.toMap