08、Spark常用RDD变换
08、Spark常用RDD变换
8.1 概述
Spark RDD内部提供了很多变换操作,可以使用对数据的各种处理。同时,针对KV类型的操作,对应的方法封装在PairRDDFunctions trait中,KV类的RDD可以被隐式转换成PairRDDFunctions类型。其中很多的操作,和传统的SQL语句中的操作是对应的,只是底层换成Spark的MR计算。
8.2 常用变换
操作 | 解释 |
---|---|
map | 变换,将输入的每个元素进行响应操作,生成新的元素 |
flatMap | 压扁,取出具有可迭代性质的组件中每个元素形成新的RDD |
filter | 过滤,将符合条件的数据抽取出来 |
reduceByKey | 按照key对value进行聚合,对KV类型的RDD进行操作 |
groupBy | 按照特定操作进行分组,产生新RDD |
mapPartitions | 对整个分区进行一次变换操作 |
mapPartitionsWithIndex | 对整个分区进行一次变换操作对,携带分区索引信息 |
union | 联合操作,将两个同型的RDD纵向合并,等价于sql union操 |
intersect | 提取两个RDD的共同的元素 |
distinct | 取出RDD集合中的重复元素,等价于SQL中distince查询 |
groupByKey | 按照key对value进行分组,针对KV类型RDD进行操作 |
aggregateByKey | 按照key进行聚合,可以改变类型 |
join | shuffle,按照key连接,等价于sql的连接操作 |
leftOuterJoin | 左外链接,按照key进行连接,等价于SQL的left outer join |
rightOuterJoin | 右外链接,按照key进行连接,等价于SQL的right outer join |
fullOuterJoin | 全外链接,按照key进行连接,等价于SQL的full outer join |
cogroup | 协分组,对两个rdd的value进行聚合成二元组 |
cartesian | 笛卡尔积,交叉连接 |
repartition | 再分区,不论是增加还是减少分区,都需要shuffle过程 |
coalesce | 改变分区,需要携带shuffle=true参数来控制是否需要 |