开发者学堂课程【大数据 Spark2020最新课程(知识精讲与实战演练)第一阶段:RDD 入门_ReduceByKey 算子】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/688/detail/11955
RDD 入门_ReduceByKey 算子
ReduceByKey 算子
主要作用:
首先按照 Key 分组,接下来把整组的 Value 计算出一个聚合值,这个操作与 mapreduce 中的 reduce 高度相似。
调用:
Def reduceByKey(func:(V,V)-V):RDD[(K,V)]
假设其中传递的函数为:
reduceByKey(curr,agg)=>curr+agg ,入口的 RDD1 ,即最终想得到的 RDD1 ,出口 RDD2,即最终输出的 RDD2,ByKey 指按照 K 进行归约,该条件约束规则为 RDD1 中需要是二院元组,代表 KeyValue 型数据。
执行过程:
首先分组,然后通过算子进行 reduce ,对每个组进行 reduce ,第一组得到 agg =0,curr =1,agg (局部结果)更新,以此类推得到四组结果。
代码编写如下:
@Test
def reduceByKeyTest():Unit ={
//1.创建 RDD
val rdd1 = sc. parallelize(Seq(“Hello lily”, “Hello lucy”,
“Hello tim”))
//2.处理数据
val rdd2 = rdd1.flatmap (item =>item.split (regex= “”))
map(item =>(item,1))
reduceByKey((curr,agg)=>curr+agg)
//3.得到结果
val result = rdd2.collect()
result.foreach(item=>println(item))
//4.关闭 sc
sc.stop()
}
运行结果如图所示:
总结:
ReduceByKey 第一步先按照 Key 分组,然后对每一组进行聚合,得到结果。
Spark 总述如图所示: