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 |
----未完------