暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据倾斜与数据漂移

李二白 2021-09-02
721


数据漂移
定义

通常发生在源数据同步到ods层这个过程中,ODS的表在同一个业务日期数据中包含前一天或者后一天凌晨附近的数据或者丢失当天的变更数据,

解决方式

①数据重传(追溯历史数据)   T+4的重传 ,目前公司订单数据使用的是T+3重传

②前后冗余  在同步T日数据时,向T-1,T+1天分别多取一部分数据,一般是15分钟的数据;缺陷,对于有状态要求的数据,可能会丢失前一个状态

③多时间字段限制来获取相对准确的数据

数据倾斜
定义

由于数据分布不均匀导致的数据大量集中到一点,造成数据热点

数据倾斜发生时的现象

1、绝大多数task执行得都非常快,但个别task执行的极慢。2、原本能正常执行的Spark作业,某天突然爆出OOM(内存溢出)异常。观察异常栈,是我们写的业务代码造成的

数据倾斜只会发生在shuffle中,下面是常用的可能会触发shuffle操作的算子:distinct、groupByKey、reduceByKey、aggregateByKey、join、cogroup、repartition等

产生倾斜的原因

A:key 分布不均匀

B:连表问题

  • 连表的主键有空值

  • 小表join大表

C:sql问题

  • group by 不和聚集函数搭配使用的时候

  • count(distinct),在数据量大的情况下,容易数据倾斜,因为 count(distinct)是按 group by 字段分组,按 distinct 字段排序

解决方式

1、连表时主键有空值导致的数据倾斜

  1. 过滤空值后再连表

  2. 对空值赋予新值(比如-1,99)后再连表

方案2比方案1的效率更好

2、小表join大表


over

这是一篇笔记~~~

文章转载自李二白,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论