分桶是将数据分解成更容易管理的若干部分的技术,桶表示对数据源数据文件本身来拆分数据。桶是更为细粒度的数据范围划分。Hive采用对列进行哈希,然后对桶的个数取模的方式决定该条记录存放在哪个桶当中。

创建桶表时,需要指定桶的个数,分桶的依据字段,Hive就可以自动将数据分桶存储。

查询时,只需要遍历一个桶里的数据,或者遍历部分桶,这样就提高了查询效率。

示例:

CREATE TABLE ods.tb_ad_action_d (
  op_time STRING,
  user_id STRING,
  task_id STRING,
  event_name STRING
)
CLUSTERED BY (user_id)
SORTED BY(task_id)
INTO 10 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t'
STORED AS TEXTFILE;