spark Core-RDD转换算子

发布于:2025-04-11 ⋅ 阅读:(38) ⋅ 点赞:(0)

1. map算子:对RDD中的数据逐条进行映射转换,可实现类型或值的转换。函数签名为 def map[U: ClassTag](f: T => U): RDD[U] 。
2. mapPartitions算子:以分区为单位处理数据,可进行任意处理。与 map 相比, map 是分区内串行处理, mapPartitions 是批处理; map 主要用于数据转换, mapPartitions 可改变数据量; mapPartitions 性能较高,但可能导致内存溢出。其函数签名为 def mapPartitions[U: ClassTag](f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false): RDD[U] 。
3. mapPartitionsWithIndex算子:以分区为单位处理数据,处理时可获取当前分区索引,函数签名为 def mapPartitionsWithIndex[U: ClassTag](f: (Int, Iterator[T]) => Iterator[U], preservesPartitioning: Boolean = false): RDD[U] 。

4. flatMap算子:先将数据扁平化,再进行映射处理。与 map 不同, map 将每条数据映射为一个新对象, flatMap 先映射为新集合再连接成大集合。函数签名为 def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U] 。
5. glom算子:将同一个分区的数据转换为内存数组,分区不变,函数签名为 def glom(): RDD[Array[T]] 。
6. groupBy算子:根据指定规则分组数据,会打乱重组数据(shuffle),分区默认不变,一个组的数据在一个分区,但一个分区可能有多个组。函数签名为 def groupBy[K](f: T => K)(implicit kt: ClassTag[K]): RDD[(K, Iterable[T])] 。
7. filter算子:依据指定规则筛选数据,保留符合规则的数据,丢弃不符合的。筛选后分区不变,但分区内数据可能不均衡,可能引发数据倾斜。函数签名为 def filter(f: T => Boolean): RDD[T] 。
8. sample算子:按指定规则从数据集中抽取数据,有放回(泊松算法)和不放回(伯努利算法)两种方式。函数签名为 def sample(withReplacement: Boolean, fraction: Double, seed: Long = Utils.random.nextLong): RDD[T] 。

9.distinct算子:用于去除数据集中的重复数据,有两个重载函数,可指定分区数。

10.coalesce算子:根据数据量缩减分区,适用于大数据集过滤后,能提高小数据集执行效率,可减少任务调度成本。

11.repartition算子:内部执行coalesce操作,shuffle参数默认值为true,可实现分区数的增加或减少,都会经过shuffle过程。

12.sortBy算子:用于对数据进行排序,可先通过指定函数处理数据,再按处理结果排序,默认升序,新RDD分区数与原RDD一致,排序过程存在shuffle。

13.intersection算子:求两个RDD的交集并返回新RDD。

14.union算子:求两个RDD的并集并返回新RDD,重复数据不会去重。

15.subtract算子:以源RDD元素为主,去除两个RDD中的重复元素,保留源RDD的其他元素(求差集)。

16.zip算子:将两个RDD中的元素以键值对形式合并,键为第一个RDD中的元素,值为第二个RDD中相同位置的元素。

17.partitionBy算子:依据指定的Partitioner重新分区数据,Spark默认分区器为HashPartitioner。

18.groupByKey算子:按key对value分组,有默认分区、指定分区数、指定分区器三种重载形式。

19.reduceByKey算子:按相同key聚合value,可在shuffle前预聚合,性能优于groupByKey;与groupByKey相比,它兼具分组和聚合功能。

20.aggregateByKey算子:可依不同规则分别进行分区内和分区间计算。

21.foldByKey算子:当分区内和分区间计算规则相同时,是aggregateByKey的简化形式。

22.combineByKey算子:功能强大,可灵活处理key - value型RDD的聚集操作,允许返回值类型与输入不一致。

 

 

 

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到