两阶段聚合(局部聚合+全局聚合)
// 第一步,给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;}});
两阶段聚合(局部聚合+全局聚合)相关推荐
- spark 数据倾斜之两阶段聚合(局部聚合+全局聚合)
两阶段聚合(局部聚合+全局聚合) 方案适用场景: 对RDD执行reduceByKey等聚合类shuffle算子或者在Spark SQL中使用group by语句进行分组聚合时,比较适用这种方案. 方案 ...
- Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计
Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...
- h3c 链路聚合测试_链路聚合技术
文/吴帅 1链路聚合概述 链路聚合(Link Aggregation)由IEEE802.3ad定义,包括链路聚合目标及实现.聚合子层的功能及操作.链路聚合控制及LACP等.链路聚合将多条物理以太链路聚 ...
- es的聚合mysql聚合速度_Elasticsearch(8) --- 聚合查询(Metric聚合)
摘要: quot;:0,"aggs":{"stats_salary":{"stats":{"field":"s ...
- mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析
本文实例讲述了mysql滑动聚合/年初至今聚合原理与用法.分享给大家供大家参考,具体如下: 滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作.下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前 ...
- Elasticsearch聚合 之 Date Histogram聚合
2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究.本篇还是 ...
- (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询
转自: https://blog.csdn.net/zx711166/article/details/81906881 聚合查询 聚合是一种基于查询条件对数据进行分桶.计算的方法. 聚合可以嵌套,由此 ...
- Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合
Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...
- 链路聚合(二层链路聚合划分)
目录 前言 一.端口绑定技术 二.实现条件 三.链路聚合的分类 四.二层交换机链路聚合划分实验 总结 前言 前两章我们讲的是相同vlan和不同vlan之间的通信技术,今天要说的是链路聚合. 一.端口绑 ...
最新文章
- 对python的认识2000字_给那些想学Python的人之2000字谏言
- 【干货】.NET WebApi HttpMessageHandler管道
- 杀手级AI补代码工具问世,支持23种语言及5种主流编辑器,程序员沸腾了
- c语言实现顺序表(详细代码)
- 基于 HttpClient 4.5 的 HttpClientUtils
- 当BIM遇上GIS-无人机倾斜摄影三维建模(ContextCapture) 建设智慧城市方法详解
- MySQL 清除表空间碎片
- PHP显示了验证码但不能登陆,thinkphp5 登陆后台验证码无法显示
- R3live笔记:从代码看lio线程
- YYlabelCopy
- 图片加水印怎么加,快速图片加水印?
- 横向越权和纵向越权(水平越权、垂直越权)
- 计算机网路原理复习笔记
- 什么软件可以让照片动起来?可以让照片动起来的软件推荐合集
- poi 图片解析-定位与读取
- ManGe总结的常用js方法
- 基于java开发的开源代码GPS北斗位置服务监控平台
- 猿大师VLC播放程序在Chrome浏览器中同时播放25路RTSP摄像头视频流效果
- 关于io操作关闭的几种方式
- zabbix-agent2监控redis、mongodb
热门文章
- 现代软件工程系列 结对编程 两周写好3D 陆战棋
- vue保存图片到手机相册_手机照片误删了怎么找回?这三个方法轻松搞定,亲测有效...
- 共阴极数码管编码表_数码管循环点亮的PLC控制——基本逻辑指令的应用
- 平台型时间信号强度曲线_哥测的不是BET,是氮气等温吸脱附曲线
- java如何画百分比圆环_canvas绘制百分比圆环进度条
- python找出在原图中的位置_Python 通过截图匹配原图中的位置(opencv)实例
- java jni helloword_JNI学习一:编写HelloWorld程序
- list的exc_集合框架
- linux部署tomcat项目404_一个tomcat下部署多个项目或一个服务器部署多个tomcat
- afm原子力分析软件_牛津仪器发布全新大样品原子力显微镜Jupiter XR