一、背景

1、将reduce join转换为map join

2、broadcast出来的普通变量

普通的join,那么肯定是要走shuffle;那么,所以既然是走shuffle,那么普通的join,就肯定是走的是reduce join。

先将所有相同的key,对应的values,汇聚到一个task中,然后再进行join。

流程图解

image.png

reduce join转换为map join,适合在什么样的情况下,可以来使用?

如果两个RDD要进行join,其中一个RDD是比较小的。一个RDD是100万数据,一个RDD是1万数据。(一个RDD是1亿数据,一个RDD是100万数据)

其中一个RDD必须是比较小的,broadcast出去那个小RDD的数据以后,就会在每个executor的block manager中都驻留一份。要确保你的内存足够存放那个小RDD中的数据

这种方式下,根本不会发生shuffle操作,肯定也不会发生数据倾斜;从根本上杜绝了join操作可能导致的数据倾斜的问题;

对于join中有数据倾斜的情况,大家尽量第一时间先考虑这种方式,效果非常好;如果某个RDD比较小的情况下。

三、其它情况

不适合的情况:

两个RDD都比较大,那么这个时候,你去将其中一个RDD做成broadcast,就很笨拙了。很可能导致内存不足。最终导致内存溢出,程序挂掉。

而且其中某些key(或者是某个key),还发生了数据倾斜;此时可以采用最后两种方式。

对于join这种操作,不光是考虑数据倾斜的问题;即使是没有数据倾斜问题,也完全可以优先考虑,用我们讲的这种高级的reduce join转map join的技术,不要用普通的join,去通过shuffle,进行数据的join;完全可以通过简单的map,使用map join的方式,牺牲一点内存资源;在可行的情况下,优先这么使用。

不走shuffle,直接走map,是不是性能也会高很多?这是肯定的。

reduce 数据倾斜_Spark(四十)数据倾斜解决方案之将reduce join转换相关推荐

  1. 2021年大数据Flink(四十五):​​​​​​扩展阅读 双流Join

    目录 扩展阅读  双流Join 介绍 Window Join Interval Join ​​​​​​​代码演示1 ​​​​​​​代码演示2 重点注意 扩展阅读  双流Join 介绍 https:// ...

  2. 大数据Flink(四十五):​​​​​​扩展阅读 双流Join

    文章目录 扩展阅读  双流Join 介绍 Window Join Interval Join

  3. 打怪升级之小白的大数据之旅(四十六)<HDFS各模块的原理>

    打怪升级之小白的大数据之旅(四十六) HDFS各模块的原理 上次回顾 上一章,我们学习了HDFS的基本知识以及一些常用的操作,本章,我们对HDFS各模块的原理进行讲解,了解清楚这些,可以更好的辅助我们 ...

  4. MongoDB 数据操作(四)数据删除

    来源:我的博客站 OceanicKang |<MongoDB 数据操作(四)数据删除> 上一篇:<MongoDB 数据操作(三)数据更新(2)修改器> 在 MongoDB 中删 ...

  5. 2021年大数据Spark(四十四):Structured Streaming概述

    Apache Spark在2016年的时候启动了Structured Streaming项目,一个基于Spark SQL的全新流计算引擎Structured Streaming,让用户像编写批处理程序 ...

  6. 2021年大数据Spark(四十二):SparkStreaming的Kafka快速回顾与整合说明

    目录 Kafka快速回顾 消息队列: 发布/订阅模式: Kafka 重要概念: 常用命令 整合说明 两种方式 两个版本API 在实际项目中,无论使用Storm还是SparkStreaming与Flin ...

  7. 数据治理系列(四):数据质量管理

    一.什么是数据质量管理? 数据质量管理是指对数据从产生.获取.存储.共享.维护.应用等各个阶段可能引发的各类数据质量问题,进行识别.度量.监控.预警等一系列管理活动,并通过改善和提高组织的管理水平使数 ...

  8. 2021年大数据Flink(四十四):​​​​​​扩展阅读 End-to-End Exactly-Once

    目录 扩展阅读 End-to-End Exactly-Once 流处理的数据处理语义 At-most-once-最多一次 At-least-once-至少一次 Exactly-once-精确一次 En ...

  9. 2021年大数据Flink(四十):​​​​​​​Flink模拟双十一实时大屏统计

    目录 Flink模拟双十一实时大屏统计 需求 数据 编码步骤: 1.env 2.source 3.transformation 4.使用上面聚合的结果,实现业务需求: 5.execute 参考代码 实 ...

  10. 2021年大数据Flink(四十八):扩展阅读  Streaming File Sink

    目录 扩展阅读  Streaming File Sink 介绍 场景描述 Bucket和SubTask.PartFile 案例演示 扩展阅读  配置详解 PartFile PartFile序列化编码 ...

最新文章

  1. Javascript异步编程的4种方法
  2. 数格子算面积的方法_水基材料防锈试验方法:铸铁粉末法
  3. 焊接机器人应用现状及发展趋势
  4. click点击后鼠标移去就失效怎么实现_鼠标右键失灵怎么办,你知道原因吗?
  5. android studio进行增删改查代码_使用C#进行数据库增删改查(二)
  6. Microsoft Press免费电子书地址
  7. java流程图表示输入 输出_流程图 - 迷途行者 - 博客园
  8. mac音频剪辑合并软件哪款比较好用,求推荐
  9. (三)【机器人路径规划】Astar算法
  10. 双十一会场体验 SSR 优化 - 走向更复杂的渲染架构
  11. 在阿里云开源镜像站中下载centOS7
  12. 将网络地图资源加载进Arcgis中
  13. android highcharts柱状图实例,Highcharts 基本柱形图
  14. 《算法图解》系列笔记(七)—— 狄克斯特拉算法
  15. 再探矩阵求逆引理 : Woodbury恒等式的证明
  16. 扔掉U盘:两步教你如何使用硬盘装系统(适用gpt磁盘)
  17. Java培训机构出来好找工作吗?
  18. 传统管理软件走在“生死边缘”,突围SaaS向死而生?
  19. 使用manifest实现XP风格界面
  20. ​LeetCode刷题实战584:寻找用户推荐人

热门文章

  1. 199. Binary Tree Right Side View
  2. 【原创】轻量级移动端即时通讯技术 MobileIMSDK 发布了
  3. 我为什么不无偿加班,你也不应该
  4. Silverlight+WCF+ArcObjects获取地图服务图层列表的实现
  5. 用C#写的汉语转拼音缩写的例子
  6. Python框架篇之Django(Django项目搭建全过程、Web框架与Django)
  7. rabbitmq 手动提交_第四章----SpringBoot+RabbitMQ发送确认和消费手动确认机制
  8. 电脑保密检查清除痕迹_保密安全|2020年国家安全与保密宣传周来啦!
  9. Python使用正则表达式检查合法IP地址
  10. linux 检测蓝牙 rssi,蓝牙LE信号强度Linux