Learning Spark 笔记(四) -- reduceByKey、combineByKey

原创 2016年08月29日 17:37:07

6 . reduceByKey运行多个reduce操作,每个key对应一个reduce操作,只不过reduce返回的是结果,reduceByKey返回的是一个新的RDD。
7 . Spark有很多根据键来合并数据的操作,其中大部分都是用combineByKey来实现的。下面是一个利用combineByKey来计算每个key的value平均值的例子。

val input = sc.textFile("...",2)
val result = input.combineByKey(
    (v)=>(v,1),
    (acc:(Int,Int),v)=>(acc._1+v,acc._2+1),
    (acc1:(Int,Int),acc2:(Int,Int))=>(acc1._1+acc2._1,acc1._2+acc2._2)).map{
    case (key,value) => (key,value._1/value._2.toDouble)}

用上面这个例子来看看combineByKey的执行过程。如下图所示:
这里写图片描述
首先在各个分区内,如果碰到一个新的key就要创建一个Combiner并要赋予初值,这是图片中标1的地方;如果是碰到一个之前已有的key,则创建mergeValue,如图中标2的地方;在每个分区中都要这样创建Combiner和mergeValue,这样在分区内结束后,就要创建mergeCombiners,来合并每个分区的combiner。combineByKey并不要求输入输出的类型一致。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Spark核心RDD:combineByKey函数详解

为什么单独讲解combineByKey? 因为combineByKey是Spark中一个比较核心的高级函数,其他一些高阶键值对函数底层都是用 groupByKey实现的。诸如 groupByKey,r...

Spark编程的基本的算子之:combineByKey,reduceByKey,groupByKey

Spark编程的基本的算子之:combineByKey,reduceByKey,groupByKey 1) combineByKey。其他的算子比如说reduceByKey,groupByKey都是基...

通过 “由对象V到对象C的转换” 来说明 Spark_Streaming api中 reduceByKey 与 combineByKey 注意事项

今年以来一直在学习通过Spark Streaming 来处理公司大数据相关的业务需求。去重\汇总 在大数据统计中是很常见的。而reduceByKey、combineByKey 在 Spark Stre...

结合Spark源码分析, combineByKey, aggregateByKey, foldByKey, reduceByKey

combineByKeydef combineByKey[C]( createCombiner: V => C, mergeValue: (C, V) => C, mergeCombine...

请教Spark 中 combinebyKey 和 reduceByKey的传入函数参数的区别?

请教Spark 中 combinebyKey 和 reduceByKey的传入函数参数的区别? 代码如下 val testData = sc.parallelize(Seq(("t1...
  • dufufd
  • dufufd
  • 2017年05月11日 16:43
  • 321

Spark RDD/Core 编程 API入门系列 之rdd案例(map、filter、flatMap、groupByKey、reduceByKey、join、cogroupy等)(四)

Spark RDD/Core 编程 API入门系列 之rdd案例(map、filter、flatMap、groupByKey、reduceByKey、join、cogroupy等)(四)  ...

Spark算子:RDD键值转换操作(2)–combineByKey、foldByKey

combineByKey        def combineByKey[C](createCombiner: (V) => C, mergeValue: (C, V) => C, mergeComb...

Spark算子篇-combineByKey实战

Spark算子combineByKeycombineByKey属于Key-Value型算子,做的是聚集操作,这种变换不会触发作业的提交,主要有三个参数,分别是: combiner function :...

【Spark Java API】Transformation(10)—combineByKey、groupByKey

spark java api...

Spark RDD操作:combineByKey函数详解

当数据集一键值对形式组织的时候,聚合具有相同键的元素进行一些统计是很常见的操作。对于Pair RDD常见的聚合操作如:reduceByKey,foldByKey,groupByKey,combineB...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Learning Spark 笔记(四) -- reduceByKey、combineByKey
举报原因:
原因补充:

(最多只允许输入30个字)