Hive分桶表

一、分桶表的创建

  1. 原始分桶表

    create table test_tb_f
    (
        id     int,
        name   string,
        age    int,
        gender string
    ) row format delimited
        fields terminated by ',';
    
  2. 创建分桶表

    create table test_tb_ft(
        id int,
        name string,
        age int,
        gender string
    )clustered by (gender) sorted by (age desc ) into 2 buckets ;
    
  3. 将原始数据中的数据进行分桶操作,本质是将原始数据表中的某个字段进行平均分配

    insert into test_tb_ft select * from python.test_tb_f;
    

二、分桶计算过程

  • 指定了分桶字段gender,在分桶时,会对gender下的数据进行hash计算,再将计算的数据结果除以分桶数取模,余数相同的数据放在同一分桶目录下

三、分桶表和分区表的区别

  • 分区表是对数据类型的划分,目的是将数据按照时间、地域进行整体数据划分,每个分区对应的是一个目录,可以进行多层分区,在分区目录下存放分区后的数据文件
  • 分桶是对已有的数据按照字段进行一个分组操作,分桶的数据是一个文件,分桶的数据不能再次分桶
  • 分区的数据可以使用分桶再次按照字段划分
  • 分区和分桶都是优化查询的一种方式,并不是创建表的必要条件
上一篇:Go语言基础之构造函数、方法和接收者


下一篇:C# 常量、枚举、结构