关闭

hive 分桶

321人阅读 评论(0) 收藏 举报
分类:

1.何为分桶以及和分区的区别

2.实际例子


分桶:如果我们根据某列进行分桶,意思就是对这列的值进行hash,然后除以桶的个数再决定把这个值放到哪个桶中,当我们查询数据的时候,where 分桶列=“” 首先也会对这个条件的值进行hash,找到他所在的桶,这样的话 其他桶就不会再找避免暴力扫描,速度上也会提升

和分区区别:分区是增加实际目录,每增加一个分区就会多个目录,分桶时把一个大的文件分成多个小文件


实际例子:

1.分桶格式:

drop table if exists table_name;

create table if not exists table_name(

row_name row_type,

row_name1 row_type,

...........................................

)

clustered by (row_name) stored by(row_name1) into 4 buckets

row format delimited fields terminated by '\t' stored as textfilel

set hive.enforce.bucketing=true;注意如果没有这句,分桶不会生效

实际例子:

创建分区表:

hive> create table if not exists buckets4(id string,name string) clustered by(id) sorted by(name) into 3  buckets row format delimited fields terminated by '\t' stored as textfile;

开启分桶:

hive> set hive.enforce.bucketing=true;

插入数据:

hive> insert overwrite table buckets4 select * from buckets3;

查看目录变化:

hive> dfs -ls /user/hive/warehouse/buckets4;

Found 3 items
-rwxr-xr-x   2 root supergroup         69 2015-11-21 01:55 /user/hive/warehouse/buckets4/000000_0
-rwxr-xr-x   2 root supergroup         72 2015-11-21 01:56 /user/hive/warehouse/buckets4/000001_0
-rwxr-xr-x   2 root supergroup         49 2015-11-21 01:58 /user/hive/warehouse/buckets4/000002_0

查看内容看你的数据是否被分散在这个三个桶中:

hive> dfs -text  /user/hive/warehouse/buckets4/000000_0;

hive> dfs -text  /user/hive/warehouse/buckets4/000001_0;

hive> dfs -text  /user/hive/warehouse/buckets4/000002_0;




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7535次
    • 积分:404
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:7篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论