Spark数据倾斜及解决方法

这篇具有很好参考价值的文章主要介绍了Spark数据倾斜及解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据倾斜是指少量的Task运行大量的数据,可能会导致OOM。数据过量是所有的Task都很慢。避免数据倾斜的方式主要有:文章来源地址https://www.toymoban.com/news/detail-614137.html

  1. 按照Key分组后,一组数据拼接成一个字符串,这样一个Key只有一条数据了。这个方式个人觉得有点僵硬。
  2. 增大或缩小Key的粒度:增大粒度一个Key包含更多的数据量。有时增大Key的粒度会降低数据倾斜,主要还是Key的数据量分布尽量均匀。
  3. 适当增大Shuffle阶段中Reduce任务的数量,可能会降低数据倾斜。
  4. 使用随机数放入Key中(放在字符串前面),Key的数量增加,但是每个Key的数据量相对均匀了。第一次聚合按照带随机数的Key,第二次对去掉随机数的真实Key进行聚合。
  5. 将join转为map join,可以选择一个较小RDD进行collect之后进行广播,然后在大RDD的map方法中遍历小RDD的数据,这样可以避免Shuffle,降低数据倾斜的可能性。
  6. 对倾斜数据进行采样后join,对导致数据倾斜的单个Key单独采样,形成单独的RDD。例如,有一个Key的数据运行较慢,可以单独对这个Key采样(采样方式可以是这个Key的全部也可以是这个Key的一部分)形成单独的RDD。然后以分开的RDD进行后面的join(这是容易导致倾斜的操作)等,最后将结果union起来即可。
  7. 使用随机数扩容进行join,join两边的rdd的Key前加一个1-N随机数(相同Key随机数必须不同),右边RDD每个Key增加1-N个数到该Key,扩容了N倍,然后进行join,这样保证join后的的数据量和之前是一致的。这种方式扩大了数倍的数据量,数据量大了不建议用。
  8. 可以使用countByKey检查哪些数据倾斜大,然后结合上面6和7情况的使用。

到了这里,关于Spark数据倾斜及解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Spark数据倾斜解决方案一:源数据预处理和过滤倾斜key

    Spark数据倾斜解决方案一:源数据预处理和过滤倾斜key

    为什么把源数据预处理和过滤掉倾斜的key两种处理倾斜的方式写到一起? 因为这两种方式在实际的项目中场景较少而且单一,对于数据源预处理,比如原本要在spark中进行聚合或join的操作,提前到hive中去做,这种方式虽然解决了spark中数据倾斜的问题,但是hive中依然也会存

    2024年02月09日
    浏览(10)
  • 大数据课程K6——Spark的Shuffle详解

    大数据课程K6——Spark的Shuffle详解

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 了解Spark的定义特点目的优缺点; ⚪ 掌握Spark的相关参数配置; ⚪ 掌握Hadoop的插件配置; Shuffle,就是洗牌。之所以需要Shuffle,还是因为具有某种共同特征的一类数据需要最终汇聚(aggregate)到一个计算节点

    2024年02月11日
    浏览(9)
  • spark 数据倾斜处理

    spark 数据倾斜处理

    1. 对多次使用的RDD进行持久化 同常内存够的时候建议使用:MEMORY_ONLY 如果内存不够的时候使用 通常建议使用:MEMORY_AND_DISK_SER策略,而不是 MEMORY_AND_DISK策略。 2. 使用高性能的算子 3. 广播大变量 4. 使用Kryo优化序列化性能 Kryo序列化器介绍: Spark支持使用Kryo序列化机制。Kryo序列化

    2024年02月11日
    浏览(9)
  • Hive & Spark & Flink 数据倾斜

    绝大部分任务都很快完成,只有一个或者少数几个任务执行的很慢甚至最终执行失败, 这样的现象为数据倾斜现象。 任务进度长时间维持在 99%或者 100%的附近,查看任务监控页面,发现只有少量 reduce 子任务未完成,因为其处理的数据量和其他的 reduce 差异过大。 单一 redu

    2024年02月07日
    浏览(16)
  • 【Spark精讲】Spark Shuffle详解

    【Spark精讲】Spark Shuffle详解

    目录 Shuffle概述 Shuffle执行流程 总体流程 中间文件 ShuffledRDD生成 Stage划分 Task划分 Map端写入(Shuffle Write) Reduce端读取(Shuffle Read) Spark Shuffle演变 SortShuffleManager运行机制 普通运行机制 bypass 运行机制 Tungsten Sort Shuffle 运行机制 基于Sort的Shuffle机制的优缺点 Shuffle调优 广播变量 shu

    2024年02月02日
    浏览(9)
  • Spark九:Spark调优之Shuffle调优

    map端和reduce端缓存大小设置,reduce端重试次数和等待时间间隔,以及bypass设置 学习资料:https://mp.weixin.qq.com/s/caCk3mM5iXy0FaXCLkDwYQ 在Spark任务运行过程中,如果shuffle的map端处理的数据量比较大,但是map端缓冲的大小是固定的,可能会出现map端缓冲数据频繁spill溢写到磁盘文件中

    2024年01月20日
    浏览(11)
  • spark 的group by ,join数据倾斜调优

    spark任务中最常见的耗时原因就是数据分布不均匀,从而导致有些task运行时间很长,长尾效应导致的整个job运行耗时很长 首先我们要定位数据倾斜,我们可以通过在spark ui界面中查看某个stage下的task的耗时,如果发现某些task耗时很长,对应要处理的数据很多,证明有数据倾斜

    2024年02月21日
    浏览(9)
  • Spark Shuffle 过程

    Spark Shuffle 过程

    本篇主要阐述Spark Shuffle过程,在执行 Job 任务时,无论是 MapReduce 或者 Spark Shuffle 过程都是比较消耗性能;因为该环节包含了大量的磁盘 IO、序列化、网络数据传输等操作。因此,在这一过程中进行调参优化,就有可能让 Job 执行效率上更好。 在 Spark 1.2 以前,默认的 Shuffle

    2023年04月08日
    浏览(10)
  • Spark学习笔记【shuffle】

    Spark学习笔记【shuffle】

    本文基本上是大数据处理框架Apache Spark设计与实现的Shuffle部分的学习。以及Spark基础知识@Bambrow 上游和下游,不同stage,不同的task之间是如何传递数据的。 ShuffleManager 管理ShuffleWrite和ShuffleRead 分为两个阶段: ShuffleWrite 上游stage输出的分区问题。 ShuffleRead 下游stage从上游获取

    2024年02月03日
    浏览(10)
  • 【详解】Spark数据倾斜问题由基础到深入详解-完美理解-费元星

    数据倾斜定义:顾名思义,就是大量相似或相同数据聚集在一个块的节点里,导致计算和资源分配不均导致的计算缓慢(长尾)问题。 数据倾斜原因: count(distinct field) group by  NULL 空值 Shuffle (概率最高、发生最普遍的数据倾斜问题,本文重点讲述这个) ##########################

    2024年02月20日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包