1
什么是分桶表
分桶表,是相对分区表来说,进行更细粒度的划分。
分桶将整个数据内容按照某列属性值的hash值进行区分,如要按照 name 属性分为3个桶,就是对 name 属性值的hash值对3取模,按照取模结果对数据分桶。
取模结果为 0 的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为 2 的数据存放到一个文件。
在物理结构上,一个桶对应着一个文件。
而分区表,只是一个目录,目录下有多少东西都是随意的。
在大表join大表的时候,只需要把相同分区的数据join到一起就好,不用整个表join了。
2
如何建立一个分桶表
代码语言:javascript复制create table if not exists dw.bl_log_buck3 (
url string,url_alias string,access_start string,access_start_ymdhms string,access_cost string,tracker_global_id string,tracker_session_id string ,user_id string
)
comment '日志明细表'
clustered by (user_id) sorted by (user_id asc) into 32 BUCKETS
row format delimited
fields terminated by '