Spark算子

1.什么是SparkRDD算子:

总的来讲RDD是Spark最小的数据抽象,每一个rdd算子都拥有五个主要的属性:

1.RDD拥有一组分区

2.RDD拥有计算分区数据的功能

3.一组其他RDD的依赖

4.对于key-value格式的RDD,可以自定义分区

5.RDD更喜欢在数据本地计算数据(即移动计算而非移动数据)

2.RDD算子:

算子 描述 实例
++(other: RDD[T]): RDD[T] 返回一个RDD与另一个RDD的并集,并且相同元素会多次出现  
aggregate[U](zeroValue: U)(seqOp: (U, T) ⇒ U, combOp: (U, U) ⇒ U)(implicit arg0: ClassTag[U]): U 先对每一个分区进行局部计算再对计算后的结果进行总计算  
def barrier(): RDDBarrier[T]    
def cache(): RDD.this.type 将RDD以默认的存储等级缓存  
def cartesian[U](other: RDD[U])(implicit arg0: ClassTag[U]): RDD[(T, U)] 返回两个RDD的笛卡尔积  
def checkpoint(): Unit 设置检查点  
def coalesce(numPartitions: Int, shuffle: Boolean = false, partitionCoalescer: Option[PartitionCoalescer] = Option.empty)(implicit ord: Ordering[T] = null): RDD[T] 返回一个减少分区数的RDD,如果设置的分区数大于RDD本身的分区,则分区数不变  
def collect[U](f: PartialFunction[T, U])(implicit arg0: ClassTag[U]): RDD[U] 返回RDD中所有可用的值  
def collect(): Array[T]    返回一个包含所有RDD的数组  
def context: SparkContext spark上下文  
def count(): Long 返回RDD中的元素数量  
def countApprox(timeout: Long, confidence: Double = 0.95): PartialResult[BoundedDouble] 类似于count算子,可能返回不完全的结果在延时之内,甚至正在执行的任务没有全部返程时  
def countApproxDistinct(relativeSD: Double = 0.05): Long 返回一个已经去掉重复数据的countApprox  
def countByValue()(implicit ord: Ordering[T] = null): Map[T, Long]  返回本地key-value格式的数据中不相等value的数量  
defcountByValueApprox(timeout: Long, confidence: Double = 0.95)(implicit ord: Ordering[T] = null): PartialResult[Map[T, BoundedDouble]] 与上面类似  
final def dependencies: Seq[Dependency[_]]  返回RDD的所以依赖  
efdistinct(): RDD[T]  返回一个一掉去掉重复数据的新RDD  
deffilter(f: (T) ⇒ Boolean): RDD[T]  返回一个数据过滤后新RDD  
 def first(): T  返回RDD中第一个值  
def flatMap[U](f: (T) ⇒ TraversableOnce[U])(implicit arg0: ClassTag[U]): RDD[U] 对RDD中的所有数据进行处理,并且返回一个新的RDD  
def fold(zeroValue: T)(op: (T, T) ⇒ T): T    
 def foreach(f: (T) ⇒ Unit): Unit  循环遍历RDD  
 def foreachPartition(f: (Iterator[T]) ⇒ Unit): Unit  遍历RDD的分区  
 def getCheckpointFile: Option[String]  如果这个RDD是检查点则返回数据目录的名字  
 final def getNumPartitions: Int  获得RDD的分区数量  
def getStorageLevel: StorageLevel 获得当前RDD的存储等级  
def glom(): RDD[Array[T]]    
def groupBy[K](f: (T) ⇒ K, p: Partitioner)(implicit kt: ClassTag[K], ord: Ordering[K] = null): RDD[(K, Iterable[T])]    
def groupBy[K](f: (T) ⇒ K, numPartitions: Int)(implicit kt: ClassTag[K]): RDD[(K, Iterable[T])]    
def groupBy[K](f: (T) ⇒ K)(implicit kt: ClassTag[K]): RDD[(K, Iterable[T])]    
val id: Int    
def intersection(other: RDD[T], numPartitions: Int): RDD[T]    
def intersection(other: RDD[T], partitioner: Partitioner)(implicit ord: Ordering[T] = null): RDD[T]    
def intersection(other: RDD[T]): RDD[T]    
def isCheckpointed: Boolean    

----未完------

上一篇:《大数据: Scala 隐式转换》


下一篇:IdentityServer4之Implicit和纯前端好像很配哦