美文网首页
Hive数据倾斜与数据膨胀小记

Hive数据倾斜与数据膨胀小记

作者: 吴建波_5368 | 来源:发表于2018-09-08 15:26 被阅读0次

写在前面

难得周末,整理了一下一周的工作,发现最近被数据倾斜问题折腾的不轻,还是静下心来总结一下,所谓雁过留痕。其实这个问题之前也碰到过,只是当时处理的数据量不大,换种方式就可以绕开这个问题,而现在TB级的数据,再也绕不开躲不过了,痛定思痛。

数据倾斜

将碰到的场景总结为以下三类

  • group by 单key的数据量过大
  • 表连接时小表连接大表
  • 表连接字段null值/边界值处理

group by 单key的数据量过大

这种情况看具体场景,可细分为如下问题

  • 日期热点问题
    举个具体的例子,例如618大促,双11购物节,必然导致当天的数据量是平常的N倍,这种场景其实有迂回的办法,对于这种可以预见的场景,在做表的时候,可以先行建立二级分区或细分分区,在根源上把数据先行打散掉
  • 不可避免的单key数据量过大
    其实Hive对这种场景已有一种优化方式,需要手动开启一个配置,如下
hive.map.aggr = true
hive.groupby.skewindata=true

具体原理就不再赘述了,mapreduce的几个过程,相当于Combiner阶段,map端部分聚合

表连接时小表连接大表

这种场景经常发生在维表的连接,小表(10000条一下的纪录条数),直接塞内存吧,map join大法可解。某些特殊场景,例如排查问题时,拿到几个ID要去海量的数据里捞行为日志,也可用map jion大法解。

表连接字段null值/边界值处理

这种情况需要case by case了,总结了几点:

  • 连接字段双方类型是否一致
  • null值/边界值是否占了绝大部分
  • 跟踪Hive物理执行计划具体分析各stage的执行情况

数据膨胀

  • 好吧,这个名词其实也是最近才收纳的。现象是因为两表连接之后,数据量远超两表只和,极端情况可能是笛卡尔积。原因可能来自如下几点:
    • 手误,写错连接条件(保持清醒,保证睡眠时间,提高工作效率才是正解,洗洗睡吧)
    • 在分析一个上层指标时,连接了N张表,越垒越大,这种情况就是时候构建中间层,构建数据Cube,先行聚合,在聚合的基础上再聚合,这样既可以复用中间钻取的数据表,减少了数据量,又加速了关联查询

好吧,记个流水账,到写的时候才发现根本就没文笔,阅读量亟待增加。

相关文章

  • Hive数据倾斜与数据膨胀小记

    写在前面 难得周末,整理了一下一周的工作,发现最近被数据倾斜问题折腾的不轻,还是静下心来总结一下,所谓雁过留痕。其...

  • Hive优化

    Hive数据倾斜优化总结 Hive数据倾斜优化分为配置优化和SQL优化 优先原则: 数据不怕多,避免倾斜。 减少J...

  • hive 优化-1

    join优化-数据倾斜hive.optimize.skewjoin=true; 【TODO 细节】数据倾斜时启动两...

  • Hive数据倾斜

    数据倾斜 map reduce任务执行时,reduce节点任务大部分执行完毕,但是有一或几个reduce任务运行很...

  • Hive 数据倾斜

    http://www.cnblogs.com/qingyunzong/p/8847597.htmlhttp://w...

  • HIVE:数据倾斜

    一、Map倾斜 根本原因:读入的文件块的数据分布不均匀。 1、上游表文件的大小不均匀,并且小文件特别多,导致当前表...

  • Hive 数据倾斜

    现象:任务卡在map 100% reduce 99%,分布式计算时, 优化目标:使map的结果更均匀的分布到red...

  • Hive数据倾斜

    原文链接:https://my.oschina.net/134596/blog/1800029 在做Shuffle...

  • hive 数据倾斜

    1、Hive 不同数据类型关联产生数据倾斜 情形:比如用户表中 user_id 字段为 int,log 表中 us...

  • hive的数据倾斜操作

    hive底层对应的是mr程序。需要注意数据倾斜问题: Hive进阶 数据倾斜 在我们数据清洗过程中,经常会出现一种...

网友评论

      本文标题:Hive数据倾斜与数据膨胀小记

      本文链接:https://www.haomeiwen.com/subject/ynzkgftx.html