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 ;

  • 相关阅读:
    Oracle 11g R2(11.2.0.4.0)+udev搭建RAC
    在 Linux 中用 nmcli 命令绑定多块网卡
    linux 配置聚合连接team(网卡绑定) , systemd 控制
    7.linux目录结构
    6.VMware备份linux操作系统
    5.linux关机和切换运行模式
    4.linux安装
    linux网络配置知识
    3.Virtual Box的安装
    2.vmWare安装
  • 原文地址:https://www.cnblogs.com/successok/p/14218967.html
Copyright © 2011-2022 走看看