// 第一步,给RDD中的每个key都打上一个随机前缀。
JavaPairRDD<String, Long> randomPrefixRdd = rdd.mapToPair(new PairFunction<Tuple2<Long,Long>, String, Long>() {private static final long serialVersionUID = 1L;@Overridepublic Tuple2<String, Long> call(Tuple2<Long, Long> tuple)throws Exception {Random random = new Random();int prefix = random.nextInt(10);return new Tuple2<String, Long>(prefix + "_" + tuple._1, tuple._2);}});// 第二步,对打上随机前缀的key进行局部聚合。
JavaPairRDD<String, Long> localAggrRdd = randomPrefixRdd.reduceByKey(new Function2<Long, Long, Long>() {private static final long serialVersionUID = 1L;@Overridepublic Long call(Long v1, Long v2) throws Exception {return v1 + v2;}});// 第三步,去除RDD中每个key的随机前缀。
JavaPairRDD<Long, Long> removedRandomPrefixRdd = localAggrRdd.mapToPair(new PairFunction<Tuple2<String,Long>, Long, Long>() {private static final long serialVersionUID = 1L;@Overridepublic Tuple2<Long, Long> call(Tuple2<String, Long> tuple)throws Exception {long originalKey = Long.valueOf(tuple._1.split("_")[1]);return new Tuple2<Long, Long>(originalKey, tuple._2);}});// 第四步,对去除了随机前缀的RDD进行全局聚合。
JavaPairRDD<Long, Long> globalAggrRdd = removedRandomPrefixRdd.reduceByKey(new Function2<Long, Long, Long>() {private static final long serialVersionUID = 1L;@Overridepublic Long call(Long v1, Long v2) throws Exception {return v1 + v2;}});

两阶段聚合(局部聚合+全局聚合)相关推荐

  1. spark 数据倾斜之两阶段聚合(局部聚合+全局聚合)

    两阶段聚合(局部聚合+全局聚合) 方案适用场景: 对RDD执行reduceByKey等聚合类shuffle算子或者在Spark SQL中使用group by语句进行分组聚合时,比较适用这种方案. 方案 ...

  2. Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计

    Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...

  3. h3c 链路聚合测试_链路聚合技术

    文/吴帅 1链路聚合概述 链路聚合(Link Aggregation)由IEEE802.3ad定义,包括链路聚合目标及实现.聚合子层的功能及操作.链路聚合控制及LACP等.链路聚合将多条物理以太链路聚 ...

  4. es的聚合mysql聚合速度_Elasticsearch(8) --- 聚合查询(Metric聚合)

    摘要: quot;:0,"aggs":{"stats_salary":{"stats":{"field":"s ...

  5. mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析

    本文实例讲述了mysql滑动聚合/年初至今聚合原理与用法.分享给大家供大家参考,具体如下: 滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作.下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前 ...

  6. Elasticsearch聚合 之 Date Histogram聚合

    2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究.本篇还是 ...

  7. (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询

    转自: https://blog.csdn.net/zx711166/article/details/81906881 聚合查询 聚合是一种基于查询条件对数据进行分桶.计算的方法. 聚合可以嵌套,由此 ...

  8. Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合

    Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...

  9. 链路聚合(二层链路聚合划分)

    目录 前言 一.端口绑定技术 二.实现条件 三.链路聚合的分类 四.二层交换机链路聚合划分实验 总结 前言 前两章我们讲的是相同vlan和不同vlan之间的通信技术,今天要说的是链路聚合. 一.端口绑 ...

最新文章

  1. 对python的认识2000字_给那些想学Python的人之2000字谏言
  2. 【干货】.NET WebApi HttpMessageHandler管道
  3. 杀手级AI补代码工具问世,支持23种语言及5种主流编辑器,程序员沸腾了
  4. c语言实现顺序表(详细代码)
  5. 基于 HttpClient 4.5 的 HttpClientUtils
  6. 当BIM遇上GIS-无人机倾斜摄影三维建模(ContextCapture) 建设智慧城市方法详解
  7. MySQL 清除表空间碎片
  8. PHP显示了验证码但不能登陆,thinkphp5 登陆后台验证码无法显示
  9. R3live笔记:从代码看lio线程
  10. YYlabelCopy
  11. 图片加水印怎么加,快速图片加水印?
  12. 横向越权和纵向越权(水平越权、垂直越权)
  13. 计算机网路原理复习笔记
  14. 什么软件可以让照片动起来?可以让照片动起来的软件推荐合集
  15. poi 图片解析-定位与读取
  16. ManGe总结的常用js方法
  17. 基于java开发的开源代码GPS北斗位置服务监控平台
  18. 猿大师VLC播放程序在Chrome浏览器中同时播放25路RTSP摄像头视频流效果
  19. 关于io操作关闭的几种方式
  20. zabbix-agent2监控redis、mongodb

热门文章

  1. 现代软件工程系列 结对编程 两周写好3D 陆战棋
  2. vue保存图片到手机相册_手机照片误删了怎么找回?这三个方法轻松搞定,亲测有效...
  3. 共阴极数码管编码表_数码管循环点亮的PLC控制——基本逻辑指令的应用
  4. 平台型时间信号强度曲线_哥测的不是BET,是氮气等温吸脱附曲线
  5. java如何画百分比圆环_canvas绘制百分比圆环进度条
  6. python找出在原图中的位置_Python 通过截图匹配原图中的位置(opencv)实例
  7. java jni helloword_JNI学习一:编写HelloWorld程序
  8. list的exc_集合框架
  9. linux部署tomcat项目404_一个tomcat下部署多个项目或一个服务器部署多个tomcat
  10. afm原子力分析软件_牛津仪器发布全新大样品原子力显微镜Jupiter XR