hive分区分桶

分桶指的是分桶表的某一列,让该列按照hash取模的方式随机均匀的分布在各个桶中,因为分桶需要根据某一列具体数据来进行hash取模,因此指定的分桶列必须位于表中的一列,分桶改变了数据的存储方式,他会把hash模相同或者在某一区间的数据放一个桶中,来提高查询效率,比如我们要对2张在同一列的表进行分桶操作的表进行join时候,只需要对保存相同列值的桶进行join操作即可,分桶可以使取样更高效

 

hive分区指单值分区、范围分区,单值分为静态和动态分区2种,

 

单值分区

单值分区根据插入时是否需要手动指定分区可以分为:单值静态分区=====>(导入数据时需要手动指定分区)以及单值动态分区=====>(导入数据时,系统可以判断目标分区)

单值分区表的创建直接定义或者create table like   单值分区表不能用 CREATE
TABLE AS SELECT 建表。而范围分区表只能通过直接定义列来建表

 

1静态分区创建 

直接在partitioned by后面跟上分区键、类型即可(分区键不能和任何列重名)

create [external] table <table_name>

  (<col_name><data_type>[,<col_name><data_type>...])

--指定分区键和数据类型

partitioned by(<partitioned_key><data_type>,...)

[clustered by ...]

[row format <row_format>]

[stored as TEXTFILE|ORC|CSVFILE]

[location '<file_path>']

[tblproperties ('<property_name>'='<proper_value>',...)];

 

 

2静态分区写入

a======覆盖写入

insert overwrite table <table_name>

      partitioned (<partitioned_key>=<partityoned_value>[,<partitioned_key>=<partityoned_value>,...])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值