Hive桶表

   首先创建普通内表:

create table u(
    id int,
    name string,
    age int)
row format delimited fields terminated by ',';

    创建桶表(可以大大优化查询的速度):

create table tu(
    id int,
    name string,
    age int)
partitioned by (timeflag bigint)
clustered by (id) sorted by (age) into 4 buckets
row format delimited fields terminated by ',';

    上述代码,是将数据按照id的hash值分成4个桶,每个桶中按照age升序排序。

    向桶表插入数据:

    1. 方法一

set mapred.reduce.tasks=4;
insert overwrite table tu partition(timeflag=130732)
select id,name,age from u distribute by id sort by age; //按id分组放入同一个文件中,且每个文件按照age升序,可以指定其他的列排序
    2. 方法二(推荐)

set hive.enforce.bucketing=true;
set hive.enforce.sorting=true;
insert overwrite table tu partition(timeflag=130734)
select id,name,age from u;    // 数据分桶且有序
    

你可能感兴趣的:(Hadoop)