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

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

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

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

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

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

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

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

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

combineByKeyWithClassTag(createCombiner, mergeValue, mergeCombiners,
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. [USACO17JAN]Promotion Counting P

    题目大意 大小为 \(n\) 以 \(1\) 为根的树,点带权,求每个子树内大于本点的点的数量 \(1 \le n \le 10^5,1 \le p_i \le 10^9\) 题解 一眼静态链分治,然 ...

  2. uni-app:获取当前经纬度解决方案+如何布置全局组件

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.布置全局组件 在我们开发的过程中,会碰到一个现象,就是在页面里面引入组件,总算要写import,components才能引用,这里给大 ...

  3. TNF拮抗剂的结构、功能与结核感染_Wallis2008

    中信国健临床通讯 2009年第2期 TNF拮抗剂的结构.功能与结核感染 Robert S. Wallis. THE LANCET Infectious Diseases. 2008; 8:601–61 ...

  4. Sonarqube安装(Docker)

    一,拉取相关镜像并运行 # 拉取sonarqube镜像 docker pull sonarqube:9.1.0-community 在运行之前要提前安装postgres并允许,新建数据库名为sonar ...

  5. 快速删除 node_modules

    node_modules 文件夹很大,不推荐右键通过回收站删除,通过 rimraf 来删除速度很快: # 安装 rimraf npm i -g rimraf # 删除 node_modules rim ...

  6. Study for Go ! Chapter two - Expression

    Study for Go ! Chapter two - Expression 1. Keyword Golang仅有 25 个保留关键字,体现了 golang 语法规则的简洁性 保留关键字不能用作常 ...

  7. git 日常基本使用

    // 将远程仓库下的所有分支拉取到本地 git fetch origin // 将dev分支合并到当前所在的分支 git merge dev // 基于当前分支克隆出新的本地分支 git checko ...

  8. js获取浏览器宽度和高度值

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>请调整浏览器窗口</t ...

  9. linus->查看文件及文件夹大小相关命令

    背景: 经常会遇到服务器服务突然停了,去服务器一看服务正常运行. 然后在排查服务器容量,发现100%使用. 那么记下来一些常用命令是有必要的. 相关命令: df -hl   查看占用情况. du -s ...

  10. undrop-for-innodb

    undrop是一款针对mysql innodb的数据恢复工具,通过扫描文件或磁盘设备,然后解析innodb数据页进而恢复丢失的数据,对于drop.truncate以及文件损坏都很有帮助.本文介绍dro ...