Hive 分桶表创建,加载数据

引言

分区针对的是数据的存储路径

分桶针对的是文件

产生原因

分区提供一个隔离数据优化查询的便利方式,不过,并非所有的数据集都可形成合理的分区,所以把单个文件划分成不同大小来进行优化。

分桶

分桶是将数据集分解成更容易管理的若干部分的另一个技术。

创建分桶表

在创建分桶表之前,需要允许分桶,默认为 Flase

set hive.enforce.bucketing=true;

create table stu_buck(id int, name string)  
clustered by(id)  // 按照那个字段分桶
into 4 buckets    // 需要分几个桶
row format delimited fields terminated by '\t';

加载数据到分桶表

使用 load 方式加载分桶表是看不出任何效果的,需要跑个MR程序,所以使用 insert 方式把数据加到分桶表

首先创建一个普通表

create table buck(id int, name string)
row format delimited fields terminated by '\t';

把数据加载到这个普通表里

load data local inpath '/root/data.txt' into table buck;

通过 insert 方式加载数据到分桶表

hive> insert into table stu_buck
    > select * from buck;
Query ID = root_20200211223628_4d38ab59-ff4f-49a5-a749-d4b1a3c9b95a
Total jobs = 1
Launching Job 1 out of 1
...
OK
Time taken: 43.425 seconds

mark

发表评论 / Comment

用心评论~