目录

reduceByKey


本篇文章记录用户访问session分析-算子调优之reduceByKey本地聚合介绍。

reduceByKey

val lines = sc.textFile("hdfs://")
val words = lines.flatMap(_.split(" "))
val pairs = words.map((_, 1))
val counts = pairs.reduceByKey(_ + _)
counts.collect()

73.Spark大型电商项目-用户访问session分析-算子调优之reduceByKey本地聚合介绍

reduceByKey,相较于普通的shuffle操作(比如groupByKey),它的一个特点,就是说,会进行map端的本地聚合。

对map端给下个stage每个task创建的输出文件中,写数据之前,就会进行本地的combiner操作,也就是说对每一个key,对应的values,都会执行你的算子函数(_ + _)

用reduceByKey对性能的提升

1、在本地进行聚合以后,在map端的数据量就变少了,减少磁盘IO。而且可以减少磁盘空间的占用。

2、下一个stage,拉取数据的量,也就变少了。减少网络的数据传输的性能消耗。

3、在reduce端进行数据缓存的内存占用变少了。

4、reduce端,要进行聚合的数据量也变少了。

相关文章:

  • 2021-04-19
  • 2021-04-05
  • 2021-11-09
  • 2021-08-09
  • 2021-05-09
  • 2022-12-23
  • 2021-07-09
  • 2021-12-23
猜你喜欢
  • 2021-10-22
  • 2021-05-21
  • 2021-05-27
  • 2021-11-15
  • 2022-01-11
  • 2021-06-17
  • 2021-05-16
相关资源
相似解决方案