• hive高频面试题


    一、Hive中排序的种类和适用场景

    1.1、order by 全局排序

    • 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序),所以当输入的数据规模较大时,会导致计算的时间较长
    • 与数据库中 order by的区别在于在 hive 的严格模式下(hive.mapred.mode = strict)下,必须指定 limit ,否则执行会报错!

    1.2、sort by 每个MapReduce排序

    • 不是全局排序,其在数据进入reducer前完成排序,单个有序。
    • sort by 的数据只能保证在同一reduce中的数据可以按指定字段排序
    • 不受 hive.mapred.mode 是否为strict ,nostrict 的影响,使用sort by 你可以指定执行的reduce 个数 (set mapred.reduce.tasks=

    1.3、distribute by 每个分区排序

    • 按照指定的字段对数据进行划分输出到不同的reduce中
    • distribute by类似 MR 中 partition(自定义分区),进行分区,某个特定行应该到哪个 reducer ,通常是为了进行后续的聚集操作
    • distribute by + sort by
      • 分桶,保证同一字段值只存在一个结果文件当中,结合 sort by 保证 每个 reduceTask 结果有序
      • distribute by 和 sort by 的常见使用场景有:
        1. Map输出的文件大小不均
        2. Reduce输出文件不均
        3. 小文件过多
        4. 文件超大

    1.4 、cluster by

    • 同一字段分桶并排序,不能和 sort by 连用,除了具有 distribute by 的功能外还兼具 sort by 的功能
    • 但是排序只能是 升序 排序,不能像distribute by 一样去指定排序的规则为 ASC 或者 DESC 。

    二、Hive的几种存储方式

    • 行式存储:TextFile、SequenceFile
    • 列式存储:ORC、Parquet

    Text File format : 默认格式,数据不做压缩,磁盘开销大,数据解析开销大。压缩后的文件不支持split,Hive不会对数据进行切分

    Sequence File format

    • SequenceFile 是 Hadoop API 提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点
    • SequenceFile 支持三种压缩选择:NONE, RECORD, BLOCK。 Record 压缩率低,一般建议使用 BLOCK 压缩。

    Parquet :

    • 列式数据存储。 查询比较快
    • Parquet支持嵌套的数据模型,每一个数据模型的schema包含多个字段,每一个字段有三个属性:重复次数、数据类型和字段名
    • 二进制方式存储的,是不可以直接读取和修改的。

    ORC : 

    • ORC 将行的集合存储在一个文件中,并且集合内的行数据将以列式存储。采用列式格式,压缩非常容易,从而降低了大量的存储成本。
    • 当查询时,会查询特定列而不是查询整行,因为记录是以列式存储的。
    • ORC 会基于列创建索引,当查询的时候会很快。
    • ORC文件也是以二进制方式存储的,所以是不可以直接读

    三、Hive调优问题(包括数据倾斜和小文件等问题)

    参考:

    Hive调优及优化(包含数据倾斜和小文件问题)_李大寶的博客-CSDN博客

    四、数仓常见问题

    参考:

    数据仓库中基本概念_李大寶的博客-CSDN博客

    五、Hive表的概念

    参考:hive中内部表、外部表、分区表、桶表、拉链表_李大寶的博客-CSDN博客_hive 查看表类型

  • 相关阅读:
    工作笔记.
    QT集成Protobuf
    QQ机器人-nonebot
    js教程(12)——本地储存
    快速熟悉Docker的一些基本操作流程
    【Bond与你白话IaC之Terraform for Docker篇】 攻城狮如何向女友解释IaC呢?
    js逆向第一课 密码学介绍
    Python 学习路线图
    查看ubuntu版本
    解密Prompt系列13. LLM Agent-指令微调方案: Toolformer & Gorilla
  • 原文地址:https://blog.csdn.net/libaowen609/article/details/126672154