美文网首页程序员
hive分区和分桶你熟悉吗?

hive分区和分桶你熟悉吗?

作者: JavaEdge | 来源:发表于2024-03-09 20:26 被阅读0次

两种用于优化查询性能的数据组织策略,数仓设计的关键概念,可提升Hive在读取大量数据时的性能。

1 分区(Partitioning)

根据表的某列的值来组织数据。每个分区对应一个特定值,并映射到HDFS的不同目录。

常用于经常查询的列,如日期、区域等。这样可以在查询时仅扫描相关的分区,而不是整个数据集,从而减少查询所需要处理的数据量,提高查询效率。

物理上将数据按照指定的列(分区键)值分散存放于不同的目录中,每个分区都作为表的一个子目录。

创建分区表

CREATE TABLE orders (
    order_id INT,
    order_date DATE,
    order_customer INT,
    order_total FLOAT
)
PARTITIONED BY (country STRING);

基于country列创建分区将使得每个国家的订单数据存储在不同的目录中。

2 分桶(Bucketing)

使用哈希函数将数据行分配到固定数量的存储桶(即文件)中。这在表内部进一步组织数据。

  • 对提高具有大量重复值的列(如用户ID)上JOIN操作的效率特别有用,因为它可以更有效地处理数据倾斜
  • 要求在创建表时指定分桶的列和分桶的数目

创建分桶表

CREATE TABLE user_activities (
    user_id INT,
    activity_date DATE,
    page_views INT
)
CLUSTERED BY (user_id) INTO 256 BUCKETS;

user_id是用于分桶的列,数据会根据用户ID的哈希值分配到256个存储桶中。

3 对比

  • 分区是基于列的值,将数据分散到不同的HDFS目录;分桶则基于哈希值,将数据均匀地分散到固定数量的文件中。
  • 分区通常用于减少扫描数据的量,特别适用于有高度选择性查询的场景;而分桶有助于优化数据的读写性能,特别是JOIN操作。
  • 分区可以动态添加新的分区,只需要导入具有新分区键值的数据;分桶的数量则在创建表时定义且不能更改。

使用分区时要注意避免过多分区会导致元数据膨胀,合理选择分区键,确保分布均匀;而分桶则通常针对具有高度重复值的列。两者结合使用时,可以进一步优化表的读写性能和查询效率。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都技术专家兼架构,多家大厂后端一线研发经验,各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化
  • 活动&优惠券等营销中台建设
  • 交易平台及数据中台等架构和开发设计

目前主攻降低软件复杂性设计、构建高可用系统方向。

参考:

本文由博客一文多发平台 OpenWrite 发布!

相关文章

  • Hive 1.2.1 分区和分捅

    1. 借鉴 Hive学习笔记——Hive中的分桶Hive分区和分桶(0925)HIVE表索引,分区和分桶的区别 2...

  • 案例详解__HIVE中内部表、外部表、分区表和分桶表

    目录一、Hive建表语法二、内部表外部表三、分区表四、分桶表 Hive在建表时可指定内部表、外部表、分区表和分桶表...

  • Hive 分区/分桶

    分区/桶 Hive 分区 Hive的分区方式:由于Hive实际上是数据文件在HDFS存在的目录区分分区字段是虚拟列...

  • 好程序员大数据培训教程分享hive分区和分桶

    好程序员大数据培训教程分享hive分区和分桶,hive 分区 1.为什么要分区?? 当单个表数据量越来越大的时候,...

  • Hive 分桶

    Hive 分桶 分桶对于每一个表或者分区,Hive可以进一步组织成桶,也就是更为细粒度的数据范围划分Hive是针对...

  • Hive分区和分桶(0925)

    分区(Partitions) 为了提高性能,Hive可以对数据进行分区• 分区列的值将一个表划分为一个个片段(文...

  • HIVE分区、分桶和索引

    分区 分区是以字段的形式在表结构中存在,通过describe table命令可以查看到字段存在,但是该字段不存放实...

  • Hive 分桶详解

    1分桶 1.1什么是分桶?和分区有什么区别? 分区:Hive在查询数据的时候,一般会扫描整个表的数据,会消耗很多不...

  • 大数据框架(分区,分桶,分片)

    前言 在大数据分布式中,分区,分桶,分片是设计框架的重点。此篇就来总结各个框架。建议收藏 目录 Hive分区与分桶...

  • Hive分桶

    Hive分桶 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。 对于hive中每一个表、分区都可以进一...

网友评论

    本文标题:hive分区和分桶你熟悉吗?

    本文链接:https://www.haomeiwen.com/subject/vgsuzdtx.html