spark通过combineByKey算子实现条件性聚合的方法

实际开发过程中遇到了需要实现选择性聚合的场景,即对于某一个key对应的数据,满足条件的记录进行聚合,不满足条件的则不聚合。

使用spark处理这种计算场景时,想到了使用combineByKey算子,先将输入数据中的value映射成含一个元素的ArrayBuffer(scala中相当于java中的ArrayList),然后在聚合时对满足聚合条件的记录聚合后覆盖这一个ArrayBuffer,不满足条件的待聚合的两条记录都填入ArrayBuffer。最后调用flatMap将ArrayBuffer中的元素分拆。

原文地址:http://blog.51cto.com/11091005/2120619

时间: 2024-10-26 09:52:32

spark通过combineByKey算子实现条件性聚合的方法的相关文章

《BI那点儿事》数据流转换——条件性拆分

原文:<BI那点儿事>数据流转换--条件性拆分 根据条件分割数据是一个在数据流中添加复杂逻辑的方法,它允许根据条件将数据输出到其他不同的路径中.例如,可以将TotalSugar< 27.4406的输出到一个路径,TotalSugar >= 27.4406的输出到另一个路径.如图.可以从上面的属性结构中拖放一个列或者代码段,然后根据逻辑重命名而不是使用默认值Case1,还可以编辑输出列的名字.

Spark RDD常用算子操作(八) 键值对关联操作 subtractByKey, join,fullOuterJoin, rightOuterJoin, leftOuterJoin

原文作者:翟开顺首发:CSDN本人仅为自己方便查阅做了摘抄,请支持原作者原文地址:https://blog.csdn.net/t1dmzks/article/details/72077428 github: https://github.com/zhaikaishun/spark_tutorial/tree/master/src/main/java/com/spark/rdd_tutorial/tutorial8先从spark-learning中的一张图大致了解其功能 subtractByKey

Java实现文本文件按条件过滤的简便方法

程序开发中经常会碰到处理文本文件中数据的情况,这里通过一个例子来看用java实现文本文件按条件过滤的方法:从文本文件employee.txt中读取员工信息,从中找出1981年1月1日(含)之后出生的女员工. 文本文件empolyee.txt的格式如下: EID   NAME       SURNAME        GENDER  STATE        BIRTHDAY        HIREDATE         DEPT         SALARY 1       Rebecca  

Spark中将RDD转换成DataFrame的两种方法

总结下Spark中将RDD转换成DataFrame的两种方法, 代码如下: 方法一: 使用createDataFrame方法 ```java //StructType and convert RDD to DataFrame val schema = StructType( Seq( StructField("name",StringType,true) ,StructField("age",IntegerType,true) ) ) val rowRDD = sp

Spark RDD-行动算子

2.4 Action 行动算子:触发运算,在 Executor 执行,如果想直接在 Driver 端看到结果可以使用 collect 和 foreach 都可以将数据拉取到 Driver 端. 2.4.1 reduce(func) 案例 1. 作用:通过 func 函数聚集 RDD 中的所有元素,先聚合分区内数据,再聚合分区间数据. 2. 需求:创建一个 RDD,将所有元素聚合得到结果 (1)创建一个 RDD[Int] scala> val rdd1 = sc.makeRDD(1 to 10,2

大数据-spark理论(2)算子,shuffle优化

导读目录 第一节:代码层面 1:RDD创建 2:算子 3:数据持久化算子 4:广播变量 5:累加器 6:开发流程 第二节:Shuffle优化层面 1:Shuffle 2:调优 第一节:代码层面 (1)RDD创建: Java: sc.textfile sc.parallelize() sc.parallelizePairs(得到KV格式的RDD) Scala: sc.textfile sc.parallelize //如果不指定分区数,用的是系统的默认分区数 makeRDD //如果不指定分区数,

spark总结4 算子问题总结

官网上最清晰 sc 启动spark时候就已经初始化好了 sc.textFile后 会产生一个rdd spark 的算子分为两类 一类 Transformation  转换 一类 Action  动作 Transformation  延迟执行 记录元数据信息     当计算任务触发Action时候才会真正的开始计算

Spark 的combineByKey函数

在Spark中有许多聚类操作是基于combineByKey的,例如group那个家族的操作等.所以combineByKey这个函数也是比较重要,所以下午花了点时间看来下这个函数.也参考了http://www.tuicool.com/articles/miueaqv这篇博客. 先看下combineByKey定义: /** * Generic function to combine the elements for each key using a custom set of aggregation

Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 Linq,而只能通过构造底层查询树的接口来完成了.由于开发者的聚合查询的需求越来越多,所以本周我们将这部分进行了增强. 接下来,本文将说明 Rafy 框架原来支持的 Linq 语法,以及最新加入的聚合查询支持及用法.   使用 Linq 查询的代码示例 public WarehouseList G