Spark collect和take函数学习(RDD-->Array)

将RDD转成Scala数组,并返回。

函数原型

def collect(): Array[T]  
def collect[U: ClassTag](f: PartialFunction[T, U]): RDD[U]  


实例

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)  


注意

如果数据量比较大的时候,尽量不要使用collect函数,因为这可能导致Driver端内存溢出问题。

建议使用 take(x:Int): rdd.take(100).foreach(println)
而不使用 rdd.collect().foreach(println)。

take获取RDD的前几个值

因为后者会导致内存溢出!!

猜你喜欢

转载自forlan.iteye.com/blog/2371501