[size=large][color=red][b]将RDD转成Scala数组,并返回。[/b][/color][/size]
[size=medium][b]函数原型[/b][/size]
[size=medium][b]实例[/b][/size]
[size=large][b]注意[/b][/size]
[size=large][color=blue][b]如果数据量比较大的时候,尽量不要使用collect函数,因为这可能导致Driver端内存溢出问题。[/b][/color][/size]
建议使用 [b][color=red]take(x:Int): rdd.take(100).foreach(println)[/color][/b]
而不使用[b]rdd.collect().foreach(println)。[/b]
[color=red][b]take获取RDD的前几个值[/b][/color]
因为后者会导致内存溢出!!
[size=medium][b]函数原型[/b][/size]
def collect(): Array[T]
def collect[U: ClassTag](f: PartialFunction[T, U]): RDD[U]
[size=medium][b]实例[/b][/size]
scala> val one: PartialFunction[Int, String] = { case 1 => "one"; case _ => "other"}
one: PartialFunction[Int,String] = <function1>
scala> val data = sc.parallelize(List(2,3,1))
data: org.apache.spark.rdd.RDD[Int] =
ParallelCollectionRDD[11] at parallelize at <console>:12
scala> data.collect(one).collect
res4: Array[String] = Array(other, other, one)
[size=large][b]注意[/b][/size]
[size=large][color=blue][b]如果数据量比较大的时候,尽量不要使用collect函数,因为这可能导致Driver端内存溢出问题。[/b][/color][/size]
建议使用 [b][color=red]take(x:Int): rdd.take(100).foreach(println)[/color][/b]
而不使用[b]rdd.collect().foreach(println)。[/b]
[color=red][b]take获取RDD的前几个值[/b][/color]
因为后者会导致内存溢出!!