一文彻底学会hive分桶表(实战详解)

本文详细介绍了Hive分桶表的概念、与分区表的区别,通过实例演示了如何创建和导入数据到分桶表,强调了正确导入的必要性和分桶规则。分桶表能提高查询效率,便于抽样调查,其本质是MapReduce的分区。
摘要由CSDN通过智能技术生成

一、分桶表概述

1.1、什么是分桶表?

分桶是将数据集分解成更容易管理的若干部分的一个技术,是比表或分区更为细粒度的数据范围划分。针对某一列进行桶的组织,对列值哈希,然后除以桶的个数求余,决定将该条记录存放到哪个桶中。

常用于:

  • 获得更高的查询处理效率
  • 抽样调查
1.2、分桶表和分区表有啥区别?

分区表提供了一个隔离数据和优化查询的便利方式。但是在实际场景下,并非所有的数据集都可形成合理的分区。对于一张表或者分区,Hive还可以进一步组织成桶,也就是更为细粒度的数据范围划分。

小结一波:

  1. 分桶对数据的处理比分区更加细粒度化;
  2. 分桶和分区两者不干扰,可以把分区表进一步分桶;
  3. 分区针对的是数据的存储路径;分桶针对的是数据文件。

二、分桶表实战

首先说明一下,我的hive环境是基于docker-compose构建,使用postgresql管理metastore,各重要组件版本如下:

hadoop:2.7.4

hive:2.3.2

java:1.8

其实环境不重要,不用花太多时间,主要还是技术部分,接下来就开始实战吧。

2.1、创建一个分桶表

我们创建一个简单的分桶表,只有两个字段(id,name),并且按照id进行分6个桶,sql如下:

create table test_buck(id int, name string)
clustered by(id) 
into 6 buckets
row format delimited fields terminated by '\t';

执行并查看表结构:
创建分桶表并查看表结构

使用desc formatted test_buck;查看test_buck表结构,数据较多,这里截取重要数据如下:
分桶表结构重要数据

评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值