【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:

              目录
              相关文章
              |
              3月前
              |
              Java 测试技术 微服务
              最新技术栈下 Java 面试高频技术点实操指南详解
              本指南结合最新Java技术趋势,涵盖微服务(Spring Cloud Alibaba)、响应式编程(Spring WebFlux)、容器化部署(Docker+Kubernetes)、函数式编程、性能优化及测试等核心领域。通过具体实现步骤与示例代码,深入讲解服务注册发现、配置中心、熔断限流、响应式数据库访问、JVM调优等内容。适合备战Java面试,提升实操能力,助力技术进阶。资源链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
              156 25
              |
              2月前
              |
              缓存 Java API
              Java 面试实操指南与最新技术结合的实战攻略
              本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
              308 0
              |
              3月前
              |
              Cloud Native Java 程序员
              【2025 最新版互联网一线大厂 Java 程序员面试 + 学习指南】覆盖全面面试知识点、实用面试技巧及前沿技术实操内容
              本内容涵盖互联网大厂主流技术栈的最新实操指南,包括微服务架构(Spring Cloud Alibaba Nacos、OpenFeign、Spring Cloud Gateway)、容器化与Kubernetes、云原生技术(Istio、Prometheus+Grafana)、高性能开发(Reactor响应式编程、CompletableFuture异步编程)及数据持久化(Redis分布式锁、ShardingSphere分库分表)。通过详细代码示例和操作步骤,帮助开发者掌握核心技术,适用于本地环境搭建与模块功能实践。适合Java程序员学习和面试准备,附带资源链接供深入研究。
              99 5
              |
              4月前
              |
              存储 SQL 关系型数据库
              京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
              京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
              京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
              |
              6月前
              |
              机器学习/深度学习 人工智能 JSON
              Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
              Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
              573 18
              Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
              |
              5月前
              |
              人工智能 算法 数据库
              美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
              美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
              |
              5月前
              |
              人工智能 自然语言处理 算法
              通义灵码助力技术求职:如何成为笔试面试冲刺的“超级助手”
              在技术岗位竞争日益激烈的当下,求职季的备战已不仅是知识储备的较量,更是效率与实战能力的比拼。面对海量面试题、复杂算法挑战及快速迭代的技术框架,开发者亟需高效工具辅助突破瓶颈。阿里云推出的智能编码工具通义灵码,凭借其代码生成、优化及智能问答等核心能力,正成为开发者备战求职季的“超级助手”。
              |
              8月前
              |
              人工智能 缓存 Ubuntu
              AI+树莓派=阿里P8技术专家。模拟面试、学技术真的太香了 | 手把手教学
              本课程由阿里P8技术专家分享,介绍如何使用树莓派和阿里云服务构建AI面试助手。通过模拟面试场景,讲解了Java中`==`与`equals`的区别,并演示了从硬件搭建、语音识别、AI Agent配置到代码实现的完整流程。项目利用树莓派作为核心,结合阿里云的实时语音识别、AI Agent和文字转语音服务,实现了一个能够回答面试问题的智能玩偶。课程展示了AI应用的简易构建过程,适合初学者学习和实践。
              278 22
              |
              9月前
              |
              并行计算 算法 安全
              面试必问的多线程优化技巧与实战
              多线程编程是现代软件开发中不可或缺的一部分,特别是在处理高并发场景和优化程序性能时。作为Java开发者,掌握多线程优化技巧不仅能够提升程序的执行效率,还能在面试中脱颖而出。本文将从多线程基础、线程与进程的区别、多线程的优势出发,深入探讨如何避免死锁与竞态条件、线程间的通信机制、线程池的使用优势、线程优化算法与数据结构的选择,以及硬件加速技术。通过多个Java示例,我们将揭示这些技术的底层原理与实现方法。
              457 3
              |
              6月前
              |
              存储 分布式计算 Hadoop
              从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
              从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
              279 79

              相关实验场景

              更多