【Hadoop技术篇】hive的优化,经典面试

简介: 1) 开启配置:set hive.optimize.bucketmapjoin = true;2) 一个表的bucket数是另一个表bucket数的==整数倍==3) bucket列 == join列 4) 满足map join条件

 目录

Map Join

作用

触发条件

Bucket-Map Join

作用

触发条件

SMB Join (sort merge bucket)

作用

触发条件

Join-Skew关联查询时数据倾斜

运行时优化

编译时优化

Unoin优化

GroupBy-Skew统计时数据倾斜

Map先行打散

MR Job随机数打散


Map Join

作用

大表 和 小表 关联查询时,提升性能,避免数据倾斜。

触发条件

--  1、开启MapJoin
set hive.auto.convert.join=true;
--  2、设置阈值,不要超出自己的硬件配置,否则内存溢出
set hive.auto.convert.join.noconditionaltask.size=512000000

image.gif

Bucket-Map Join

作用

大表 和 中表 关联(小表的数据大小超出阈值)时,使用Map端Join优化。

触发条件

1) 开启配置:set hive.optimize.bucketmapjoin = true;

2) 一个表的bucket数是另一个表bucket数的==整数倍==

3) bucket列 == join列 4) 满足map join条件

SMB Join (sort merge bucket)

作用

当大表和大表关联(关联的两个表数据都很大)时使用。

触发条件

    1. 开启SMB配置
    set hive.optimize.bucketmapjoin = true;
    set hive.auto.convert.sortmerge.join=true;
    set hive.optimize.bucketmapjoin.sortedmerge = true;
    set hive.auto.convert.sortmerge.join.noconditionaltask=true;
    1. image.gif
    2. bucket列 == join列,且要Sort此列
      1. 创建表时,sorted by (列);
      2. 插入数据时:
        1. cluster by (列);
        2. hive.enforce.sorting 设置为 true
            1. 两个表的bucket数==必须相等==
            2. 满足BucketMapJoin的条件

            Join-Skew关联查询时数据倾斜

            运行时优化

            -- 开启运行时倾斜优化
            set hive.optimize.skewjoin=true;
            -- 设定倾斜阈值
            set hive.skewjoin.key=100000;  //行数

            image.gif

            编译时优化

              1. 开启编译时优化
              set hive.optimize.skewjoin.compiletime=true;
              1. image.gif
              2. 建表时指定倾斜字段和倾斜的值
              CREATE TABLE list_bucket_single (key STRING, value STRING)
              --  倾斜的字段和需要拆分的key值
              SKEWED BY (name) ON (‘张三’,’李四’,’王五’)
              --   为倾斜值创建子目录单独存放
              [STORED AS DIRECTORIES];
              1. image.gif

              Unoin优化

              set hive.optimize.union.remove=true;

              image.gif

              GroupBy-Skew统计时数据倾斜

              Map先行打散

              CM中配置hive.map.aggr

              MR Job随机数打散

              hive.groupby.skewindata=true;

              image.gif

              注意:有多个列执行distinct去重操作时,不支持skewindata:

              目录
              相关文章
              |
              2月前
              |
              SQL 分布式计算 关系型数据库
              Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
              Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
              68 2
              |
              1月前
              |
              存储 网络协议 安全
              30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
              本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
              83 2
              |
              2月前
              |
              SQL 分布式计算 Hadoop
              手把手的教你搭建hadoop、hive
              手把手的教你搭建hadoop、hive
              157 1
              |
              2月前
              |
              SQL 分布式计算 关系型数据库
              Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
              Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
              80 3
              |
              2月前
              |
              SQL 分布式计算 Hadoop
              Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
              Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
              81 3
              |
              2月前
              |
              SQL 分布式计算 Hadoop
              Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
              Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
              53 2
              |
              2月前
              |
              SQL 分布式计算 关系型数据库
              Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
              Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
              104 0
              |
              4月前
              |
              消息中间件 缓存 NoSQL
              再也不怕面试官问零拷贝技术
              该文章主要讨论了零拷贝技术的相关概念、传统IO读写操作的过程以及零拷贝技术的两种实现方法。
              再也不怕面试官问零拷贝技术
              |
              4月前
              |
              Linux 数据安全/隐私保护 Perl
              解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
              【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
              84 8
              |
              4月前
              |
              监控 Linux 数据安全/隐私保护
              Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
              【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
              70 4
              下一篇
              DataWorks