zoukankan      html  css  js  c++  java
  • 解决Hive表关联查询数据倾斜的问题

    1) 过滤掉脏数据:如果大key是无意义的脏数据,直接过滤掉。本场景中大key无实际意义,为非常脏数据,直接过滤掉。

    2)数据预处理:数据做一下预处理,尽量保证join的时候,同一个key对应的记录不要有太多。

    3) 增加reduce个数:如果数据中出现了多个大key,增加reduce个数,可以让这些大key落到同一个reduce的概率小很多。

    4) 转换为mapjoin:如果两个表join的时候,一个表为小表,可以用mapjoin做。

    5) 大key单独处理:将大key和其他key分开处理

    6)hive.optimize.skewjoin:会将一个join sql 分为两个job。另外可以同时设置下hive.skewjoin.key,默认为10000。参考:

    https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties

    参数对full outer join无效。

    7)调整内存设置:适用于那些由于内存超限内务被kill掉的场景。通过加大内存起码能让任务跑起来,不至于被杀掉。该参数不一定会明显降低任务执行时间。如:

    setmapreduce.reduce.memory.mb=5120 ;

    setmapreduce.reduce.java.opts=-Xmx5000M -XX:MaxPermSize=128m ;

  • 相关阅读:
    websocket 初识
    JavaScript 系列博客(四)
    JavaScript 系列博客(三)
    JavaScript 系列博客(二)
    JavaScript 系列博客(一)
    前端(八)之形变
    前端(七)之动画与阴影
    java变量、数据类型
    js简单的获取与输出
    Eclipse字体修改
  • 原文地址:https://www.cnblogs.com/successok/p/14218967.html
Copyright © 2011-2022 走看看