SparkRDD操作之aggregate

看代码最好解释

package cn.sparkdemo.coreimport org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext, TaskContext}object RDDAggregate {def main(args: Array[String]): Unit = {//1、创建上下文对象val sparkConf: SparkConf = new SparkConf().setAppName("Wordcount").setMaster("local[*]")val sc = new SparkContext(sparkConf)//2、加载并行化集合手动指定分区数是2,得到RDD,val inputRDD: RDD[Int] = sc.parallelize((1 to 10), 2)//3、用aggregate计算元素的和。//inputRDD.aggregate(0)(()=>{},()=>{})此处参数零为聚合的初始值,第一个()=>{}为分区内的聚合,第二个()=>{}为分区间的聚合val aggregated_value: Int = inputRDD.aggregate(0)(//分区内聚合,tmp为每次聚合后的值作为缓冲变量参与下次聚合,item为分区内的每个具体的值(tmp, item) => {println(s"分区内,分区号=${TaskContext.getPartitionId()}, tmp=${tmp},item=${item},sum=${tmp + item}")tmp + item},//分区间聚合,item为上面每个分区聚合后的分区内总值(tmp, item) => {println(s"分区间,分区号=${TaskContext.getPartitionId()}, tmp=${tmp},item=${item},sum=${tmp + item}")tmp + item})//上述可以简化为inputRDD.aggregate(0)( _+_, _+_)//4、打印结果println(aggregated_value)//5、如果上述分区内核分区间的聚合函数逻辑一样,则可以简化成一个,成为了foldval fold_value: Int = inputRDD.fold(0)(_+_)println("fold_value="+fold_value)//6、如果上述初始值,没有太大的意义,则可以简化成reduceval reduce_value: Int = inputRDD.reduce(_+_)println("reduce_value="+reduce_value)sc.stop()}}

SparkRDD操作之aggregate相关推荐

  1. Stream Processing:滑动窗口的聚集(aggregation)操作的优化算法讲解

    本文将要讲解流处理中滑动窗口聚集操作的相关优化算法.将分别从下面几个方面讲解: 什么是滑动窗口? 什么是滑动窗口的聚集操作? 聚集操作的优化的必要性在哪里? 有哪些优化算法,它们的原理分别是什么? 4 ...

  2. spark Rdd 操作transformaction和action等

    为什么80%的码农都做不了架构师?>>>    transformation是惰性的,只有action操作的时候,才会真正执行.spark有很多api,RDD的api只是spark的 ...

  3. JAVA的stream流操作详细解析

    java的stram流操作 为什么需要 Stream 流与集合的区别 对比:原始集合操作与Stream集合操作 (过滤/映射/扁平化/遍历/排序/去重/跳过/截断的应用) 流的组成 流操作的分类 流的 ...

  4. 【大数据存储技术】实验2:MongoDB数据库的部署和操作

    目录 1.实现MongoDB单实例的部署 1.1 安装MongoDB(Ubuntu版本:22.04 LTS) 1.1.1 查看Ubuntu版本 1.1.2 使用Ubuntu命令安装 1.2 启动Mon ...

  5. MongoDB(6)数据聚合 amp;amp; 管道操作

    MongoDB 入门专栏 http://blog.csdn.net/column/details/19681.html 管道操作 mongodb 的数据聚合过程通常会配合管道操作,mongodb 的管 ...

  6. r语言aggredate_R语言 aggregate函数

    前言 这个函数的功能比较强大,它首先将数据进行分组(按行),然后对每一组数据进行函数统计,最后把结果组合成一个比较nice的表格返回.根据数据对象不同它有三种用法,分别应用于数据框(data.fram ...

  7. spark-core-转载

    第1章 RDD 概念 1.1 RDD 为什么会产生   RDD:Resilient Distributed Dataset 弹性分布式数据集   RDD 是 Spark 的基石,是实现 Spark 数 ...

  8. Prefactoring——Guidelines

    Prefactoring--Guidelines Prefactoring--Introduction Introduction 虽然Prefactoring这个概念并无多少新意(个人看法),但Ken ...

  9. Spark的RDD行动算子

    目录 基本概念 算子介绍 1. reduce 2. collect 3. count 4. first 5. take 6. takeOrdered 案例实操1-6 7. aggregate 8. f ...

最新文章

  1. BZOJ1202: [HNOI2005]狡猾的商人
  2. 这 6 个 Spring Boot 项目够经典
  3. ansible 修改文件变量_Ansible Playbook中的变量与引用
  4. 【性能测试】性能测试的基础理论
  5. java实现次方的运算_【技术干货】Java 面试宝典:Java 基础部分(1)
  6. Linux使用命令 笔记
  7. 智慧工厂用到的技术_CCF VC物联网应用技术专业工作组走进苏宁物流智慧仓储工厂参观学习...
  8. 启用IIS7配置ASP运行环境的详细方法
  9. 32位程序使用超过4G的内存
  10. python教学反思_Python语言教学反思
  11. 首页-文章列表 (三) -列表文章布局-Cell 单元格组件-一张图和三张图 van-ellipsis 内容超过一行会省略 w33-宽度33%剩余1%做了图片之间间隙.md
  12. 使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码
  13. 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 一)
  14. 现在最火爆的盲盒交友小程序源码
  15. Android开发-安卓手机真机调试配置教程(以小米/红米手机为例)
  16. 二元函数可微与偏导数_二元函数的连续、偏导数、可微之间的关系
  17. 充电枪cp信号控制板_通过充电枪CP信号控制常电输入的电路的制作方法
  18. 华为鸿蒙系统开发语言,华为鸿蒙系统采用什么语言进行开发的
  19. Qt多功能计算器(三)——进制转换
  20. Android APN设置 获取APN列表

热门文章

  1. [爬虫架构] 如何在分布式爬虫架构中动态维护一个代理IP池(付费代理)
  2. SSM框架的工作流程图
  3. java计算机毕业设计河东街摊位管理系统MyBatis+系统+LW文档+源码+调试部署
  4. 键盘上各种符号的英文名称与发音
  5. uniapp打包成h5页面
  6. 手机截屏直接分享反馈
  7. Flutter上线项目实战——苹果内购
  8. 微信调整小程序和公众号流量主收入分成比例
  9. Python--如何计算皮尔逊相关系数(Pearson correlation coefficient)
  10. 文献管理软件Mendeley Reference Manager使用方法