对应的是两种Iterator
例子:
scala> var res = List[Int]()
res: List[Int] = List()
scala> :type res.iterator
Iterator[Int]
scala> :type Iterator(res)
Iterator[List[Int]]
//下面的代码段输出是什么?
val a = sc.parallelize(1 to 9, 3)
def doubleFunc (iter: Iterator[Int]) : Iterator[(Int,Int)] = {
var res = List[(Int,Int)]()
while (iter.hasNext)
{
val cur = iter.next;
res .::= (cur,cur*2)
}
res.iterator
}
val result = a.mapPartitions(doubleFunc)
println(result.collect().mkString)
答案:(3,6)(2,4)(1,2)(6,12)(5,10)(4,8)(9,18)(8,16)(7,14)
//下面的代码段输出是什么?
val a = sc.parallelize(1 to 9,3)
def doubleFunc = (iter: Iterator[Int]) => {
var res = List[(Int,Int)]()
iter.foreach( x => res::= (x,x*2) )
Iterator(res)
}
val result = a.mapPartitions(doubleFunc)
println(result.collect().mkString)
答案:List((3,6), (2,4), (1,2))List((6,12), (5,10), (4,8))List((9,18), (8,16), (7,14))