参考资料:

http://stackoverflow.com/questions/32281417/understadning-treereduce-in-spark

http://stackoverflow.com/questions/34078430/treereduce-vs-reducebykey-in-spark

reduceByKey和treeReduce之间有一个根本区别,reduceByKey它只对key-value pair RDDs可用,而treeReduce可以对任何RDD使用,相当于是reduce操作的泛化。 reduceByKey用于实现treeReduce,但它们在任何其他意义上都不相关。

reduceByKey对每个键执行reduce,结果生成RDD; 它不是"action"操作,而是返回ShuffleRDD,是"transformation"。 这等效于groupByKey后面跟着一个map,它执行key-wise reduction(为什么使用groupByKey是低效的)。

另一方面,treeAggregate是reduce函数的泛化,灵感来自AllReduce。 这在Spark中是一个"action",将结果返回到master节点。在执行本地的reduce操作之后,普通的reduce在master上执行剩余的计算,这样的计算量可能是非常繁重的(特别是在机器学习中,reduce函数结果是大的向量或矩阵时)。 相反,treeReduce使用reduceByKey并行的执行reduction(这是通过在运行时创建key-value pair RDD,其中键由树的深度确定)

treeReduce & reduce return some result to driver

treeReduce does more work on the executors

while reduce bring everything back to the driver.

Spark笔记-treeReduce、reduce、reduceByKey的更多相关文章

  1. spark笔记 环境配置

    spark笔记 spark简介 saprk 有六个核心组件: SparkCore.SparkSQL.SparkStreaming.StructedStreaming.MLlib,Graphx Spar ...

  2. 大数据学习——spark笔记

    变量的定义 val a: Int = 1 var b = 2 方法和函数 区别:函数可以作为参数传递给方法 方法: def test(arg: Int): Int=>Int ={ 方法体 } v ...

  3. Spark笔记——技术点汇总

    目录 概况 手工搭建集群 引言 安装Scala 配置文件 启动与测试 应用部署 部署架构 应用程序部署 核心原理 RDD概念 RDD核心组成 RDD依赖关系 DAG图 RDD故障恢复机制 Standa ...

  4. java实现spark常用算子之ReduceByKey

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spa ...

  5. spark 笔记 16: BlockManager

    先看一下原理性的文章:http://jerryshao.me/architecture/2013/10/08/spark-storage-module-analysis/ ,http://jerrys ...

  6. spark 笔记 15: ShuffleManager,shuffle map两端的stage/task的桥梁

    无论是Hadoop还是spark,shuffle操作都是决定其性能的重要因素.在不能减少shuffle的情况下,使用一个好的shuffle管理器也是优化性能的重要手段. ShuffleManager的 ...

  7. spark 笔记 8: Stage

    Stage 是一组独立的任务,他们在一个job中执行相同的功能(function),功能的划分是以shuffle为边界的.DAG调度器以拓扑顺序执行同一个Stage中的task. /** * A st ...

  8. spark 笔记 6: RDD

    了解RDD之前,必读UCB的论文,个人认为这是最好的资料,没有之一. http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf A Re ...

  9. spark 笔记 4:Apache Hadoop YARN: Yet Another Resource Negotiator

    spark支持YARN做资源调度器,所以YARN的原理还是应该知道的:http://www.socc2013.org/home/program/a5-vavilapalli.pdf    但总体来说, ...

随机推荐

  1. [Locked] Read N Characters Given Read4 & Read N Characters Given Read4 II - Call multiple times

    Read N Characters Given Read4 The API: int read4(char *buf) reads 4 characters at a time from a file ...

  2. 打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)具体解释

    为什么要做这个看起来不靠谱的东西呢? 由于刚学android开发,还不能非常好的熟练控制android界面的编辑和操作,所以我的一个急着要的运用就改为html5版本号了,反正这个运用也是须要从serv ...

  3. Delphi 2007体验!

    Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...

  4. SmartFoxServer 2x的pythonclient

    最近的研究SmartFoxServer 2x.这是一个对网络游戏的Web开发框架.服务器基于java netty为发展框架,client支持flash,unity, ios, android(java ...

  5. php导出excel不断刷新缓冲区的思路(转)

    require('./db.class.php');$DB = new db();$DB->connect();//数据库链接 header("Content-Type: text/c ...

  6. 4道过滤菜鸟的iOS面试题

    网上已经有很多针对各种知识点的面试题,面试时有些人未必真正理解也能通过背题看上去很懂.我自己总结了4道面试题,好快速的判断这个人是否是一个合格的工程师,欢迎大家点评. 1.struct和class的区 ...

  7. 线程、委托、lambda运算符的简单示例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. Java基础知识强化17:JAVA不可以将所覆盖的方法的访问权限变得比父类的小

    首先我们看一下下面的代码如下: interface I { void go(); } abstract class A implements I { } class C extends A { voi ...

  9. NYOJ 47过河问题

    主要思路:先排序.有两种可能是最小的情况,一种是让最小的去带着最大的过去,然后最小的再回来,还有一种就是先最小的和第二小的一块过去, 然后最小的回来,让最大的和第二大的过去,接着第二小的回来,第二小和 ...

  10. maven 启动忽略test

    两种方法 1,--命令 mvn install -Dmaven.test.skip=true 2.pom.xml 文件 在tomcat 下面的pom.xml 文件里面加上如下 <!--  ski ...