value类型
算子名称 | 作用 |
---|
Map映射 | a->b |
flatMap扁平化 | [[a,b],[c,d]] -> [a,b,c,d] ,二维变一维 |
groupBy分组 | [1,2,3,4] ->[[1,3],[2,4] ],一维变二维 |
filter过滤 | [1,2,3,4] -> [2,4] 符合条件进入,不符合去掉 |
distinct去重 | [1,1,2,2] -> [1,2] 去重过程中存在shuffle |
sortBy排序 | [1,3,2] -> [1,2,3] 排序 |
使用localhost:4040可以查看IDEA代码中算子的执行情况,可以使用Thread.sleep(10000)来睡眠一会,保证可以打开该网页。
key-value类型
算子名称 | 作用 |
---|
mapValues | 对value进行映射 |
groupByKey | 对数据进行汇总,可以设置分区数量或分区器 |
reduceByKey | 对数据进行汇总计算,底层会打散重分区,增加了预聚合 |
sortByKey | 对Key进行排序,底层是Range分区 |
reduceByKey不能用于减法和除法运算,只能用于加法和乘法计算。 | |
两种分区
- Hash分区:极端情况有可能导致数据倾斜,适合用于聚合。
- Range分区:尽量保证每个分区中数据量均匀,适合用于排序。使用Range分区器的算子有groupByKey, sortBy, cogroup.