groupByKey根据key对value进行分组,默认没有预聚合

  1. combineByKeyWithClassTag[CompactBuffer[V]](
  2. createCombiner, mergeValue, mergeCombiners, partitioner, mapSideCombine = false)

reduceByKey分区内和分区间的计算逻辑一致,第一个Key的值不做任何计算,直接返回,在分区内和第二个key的值做计算

  1. combineByKeyWithClassTag[V]((v: V) => v, func, func, partitioner)

aggregateByKey分区内和内区间的计算逻辑可以不同,第一个key的值和初始值做分区内计算

  1. combineByKeyWithClassTag[U]((v: V) => cleanedSeqOp(createZero(), v),
  2. cleanedSeqOp, combOp, partitioner)

foldByKey分区内和分区间的逻辑一致,第一个key的值和初始值做分区内计算

  1. combineByKeyWithClassTag[V]((v: V) => cleanedFunc(createZero(), v),
  2. cleanedFunc, cleanedFunc, partitioner)

combineByKey分区内和内区间的计算逻辑可以不同,对分区内第一个key的value进行格式转换

  1. combineByKeyWithClassTag(createCombiner, mergeValue, mergeCombiners,
  2. partitioner, mapSideCombine, serializer)(null)

总之:这五个方法底层调的是同一个方法,只不过是参数不同而已!

groupByKey、reduceByKey、aggregateByKey、foldByKey、combineByKey的联系和区别的更多相关文章

  1. (九)groupByKey,reduceByKey,sortByKey算子-Java&Python版Spark

    groupByKey,reduceByKey,sortByKey算子 视频教程: 1.优酷 2. YouTube 1.groupByKey groupByKey是对每个key进行合并操作,但只生成一个 ...

  2. [Spark RDD_add_1] groupByKey & reduceBykey 的区别

    [groupByKey & reduceBykey 的区别] 在都能实现相同功能的情况下优先使用 reduceBykey Combine 是为了减少网络负载 1. groupByKey 是没有 ...

  3. Spark 学习笔记之 distinct/groupByKey/reduceByKey

    distinct/groupByKey/reduceByKey: distinct: import org.apache.spark.SparkContext import org.apache.sp ...

  4. Spark中groupBy groupByKey reduceByKey的区别

    groupBy 和SQL中groupby一样,只是后面必须结合聚合函数使用才可以. 例如: hour.filter($"version".isin(version: _*)).gr ...

  5. 【转】Spark是基于内存的分布式计算引擎

    Spark是基于内存的分布式计算引擎,以处理的高效和稳定著称.然而在实际的应用开发过程中,开发者还是会遇到种种问题,其中一大类就是和性能相关.在本文中,笔者将结合自身实践,谈谈如何尽可能地提高应用程序 ...

  6. 浅谈Spark应用程序的性能调优

    浅谈Spark应用程序的性能调优 :http://geek.csdn.net/news/detail/51819 下面列出的这些API会导致Shuffle操作,是数据倾斜可能发生的关键点所在 1. g ...

  7. Spark(四)【RDD编程算子】

    目录 测试准备 一.Value类型转换算子 map(func) mapPartitions(func) mapPartitions和map的区别 mapPartitionsWithIndex(func ...

  8. Spark学习记录

    SpringStrongGuo Hadoop与Spark Hadoop主要解决,海量数据的存储和海量数据的分析计算. Spark主要解决海量数据的分析计算. Spark运行模式 1)Local:运行在 ...

  9. spark中产生shuffle的算子

    Spark中产生shuffle的算子 作用 算子名 能否替换,由谁替换 去重 distinct() 不能 聚合 reduceByKey() groupByKey groupBy() groupByKe ...

  10. Spark为什么只有在调用action时才会触发任务执行呢(附算子优化和使用示例)?

    Spark算子主要划分为两类:transformation和action,并且只有action算子触发的时候才会真正执行任务.还记得之前的文章<Spark RDD详解>中提到,Spark ...

随机推荐

  1. reids(2)概述与安装

    前言 redis安装在Linux服务器上,系统为centos7,安装的版本为redis6.2.10 下载与安装 下载地址:https://redis.io/download/#redis-downlo ...

  2. php pdo如何查询记录条数

    转载php中文网:https://www.php.cn/php-ask-457710.html php pdo查询记录条数的方法:1.使用fetchAll函数查询,其语法如"$rows=$q ...

  3. vscode+eslint项目规范化,自动格式化配置(项目中用到的)

    项目如果没有格式化插件就会变得十分拥挤,并且因为个人的开发习惯不同,会导致多人配合的时候,某些人的格式不能与你的兼容 导致项目大面积冲突,这样一来统一的格式和开发规范就十分必要了. 1.下载使用vsc ...

  4. Python接口自动化之pymysql数据库操作

    一.pymysql介绍及安装 01 pymysql介绍 MySQL应该说是如今使用最为普遍的数据库了,没有之一,而Python作为最为流行的语言之一,自然少不了与MySQL打交道,其中PyMySQL就 ...

  5. LeetCode-2049 统计最高分的结点数

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/count-nodes-with-the-highest-score 题目描述 给你一棵根节点为 ...

  6. 红米手机刷 LineageOS (实操)

    参考:https://miuiver.com/how-to-flash-lineageos/ 实操机型:红米note8 1. 下载Android Platform-Tools 2. 下载对应机型的TW ...

  7. 代数余子式的由来/代数余子式为什么-1的系数是ⁱ⁺ʲ?/证明一个n阶行列式,如果其中第i行(或第j列)所有元素除aᵢⱼ外都为零,那么这行列式等于aᵢⱼ与它的代数余子式的乘积/证明行列式按行(列)展开法则:n(n>1)阶行列式等于它任意一行(列)的所有元素与它们对应的代数余子式的乘积的和。

    代数余子式的由来/代数余子式为什么-1的系数是ⁱ⁺ʲ?/证明一个n阶行列式,如果其中第i行(或第j列)所有元素除aᵢⱼ外都为零,那么这行列式等于aᵢⱼ与它的代数余子式的乘积/证明行列式按行(列)展开法 ...

  8. 使用windows平板学习与办公的一些经历(酷比魔方i9篇)

    大概是在2019年的时候,我在某平台上购买了900元的二手windows平板电脑,酷比魔方i9 首先谈谈背景.当时我手里是有个笔记本,屏幕大概15.6寸,4G+256G的,平时用的时候功率平均20几W ...

  9. CF单机版终极猎手30人版安装教程

    本游戏是CF的单机版本,内含终极猎手30人版,可变身四种终极猎手.这个版本只有这一种模式,没有其他的幽灵模式.生化模式.爆破模式.团队模式等等,如果想玩上述的模式,你可以在其他地方找.值得注意的是这个 ...

  10. 使用WTM框架项目的部署遇到的问题及解决方式

    .打开web.config找到stdoutLogEnabled="false",把该值改为true,即->stdoutLogEnabled="true"1 ...