SparkRDD操作之aggregate
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相关推荐
- Stream Processing:滑动窗口的聚集(aggregation)操作的优化算法讲解
本文将要讲解流处理中滑动窗口聚集操作的相关优化算法.将分别从下面几个方面讲解: 什么是滑动窗口? 什么是滑动窗口的聚集操作? 聚集操作的优化的必要性在哪里? 有哪些优化算法,它们的原理分别是什么? 4 ...
- spark Rdd 操作transformaction和action等
为什么80%的码农都做不了架构师?>>> transformation是惰性的,只有action操作的时候,才会真正执行.spark有很多api,RDD的api只是spark的 ...
- JAVA的stream流操作详细解析
java的stram流操作 为什么需要 Stream 流与集合的区别 对比:原始集合操作与Stream集合操作 (过滤/映射/扁平化/遍历/排序/去重/跳过/截断的应用) 流的组成 流操作的分类 流的 ...
- 【大数据存储技术】实验2:MongoDB数据库的部署和操作
目录 1.实现MongoDB单实例的部署 1.1 安装MongoDB(Ubuntu版本:22.04 LTS) 1.1.1 查看Ubuntu版本 1.1.2 使用Ubuntu命令安装 1.2 启动Mon ...
- MongoDB(6)数据聚合 amp;amp; 管道操作
MongoDB 入门专栏 http://blog.csdn.net/column/details/19681.html 管道操作 mongodb 的数据聚合过程通常会配合管道操作,mongodb 的管 ...
- r语言aggredate_R语言 aggregate函数
前言 这个函数的功能比较强大,它首先将数据进行分组(按行),然后对每一组数据进行函数统计,最后把结果组合成一个比较nice的表格返回.根据数据对象不同它有三种用法,分别应用于数据框(data.fram ...
- spark-core-转载
第1章 RDD 概念 1.1 RDD 为什么会产生 RDD:Resilient Distributed Dataset 弹性分布式数据集 RDD 是 Spark 的基石,是实现 Spark 数 ...
- Prefactoring——Guidelines
Prefactoring--Guidelines Prefactoring--Introduction Introduction 虽然Prefactoring这个概念并无多少新意(个人看法),但Ken ...
- Spark的RDD行动算子
目录 基本概念 算子介绍 1. reduce 2. collect 3. count 4. first 5. take 6. takeOrdered 案例实操1-6 7. aggregate 8. f ...
最新文章
- BZOJ1202: [HNOI2005]狡猾的商人
- 这 6 个 Spring Boot 项目够经典
- ansible 修改文件变量_Ansible Playbook中的变量与引用
- 【性能测试】性能测试的基础理论
- java实现次方的运算_【技术干货】Java 面试宝典:Java 基础部分(1)
- Linux使用命令 笔记
- 智慧工厂用到的技术_CCF VC物联网应用技术专业工作组走进苏宁物流智慧仓储工厂参观学习...
- 启用IIS7配置ASP运行环境的详细方法
- 32位程序使用超过4G的内存
- python教学反思_Python语言教学反思
- 首页-文章列表 (三) -列表文章布局-Cell 单元格组件-一张图和三张图 van-ellipsis 内容超过一行会省略 w33-宽度33%剩余1%做了图片之间间隙.md
- 使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码
- 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 一)
- 现在最火爆的盲盒交友小程序源码
- Android开发-安卓手机真机调试配置教程(以小米/红米手机为例)
- 二元函数可微与偏导数_二元函数的连续、偏导数、可微之间的关系
- 充电枪cp信号控制板_通过充电枪CP信号控制常电输入的电路的制作方法
- 华为鸿蒙系统开发语言,华为鸿蒙系统采用什么语言进行开发的
- Qt多功能计算器(三)——进制转换
- Android APN设置 获取APN列表