笔记九:分区表、分桶表

分区表(Partitioned Table)

分区表是将表的数据按照某个列的值进行逻辑上的划分,将数据分散存储在不同的分区中

在Hive中,要创建分区表,语法:

create [external] table 表名(
	字段名 字段类型 [comment '注释'],
	字段名 字段类型 [comment '注释'],
	...
) 
[partition by(分区列 数据类型, ...)]
[row format delimited
fields terminated by '指定分隔符'];

说明:

(1)partition表示给数据表分区处理,但后面字段有多个时,表示多分区表;

(2)分区列名不允许与表字段同名,要单独命名,一般以年、月、日分区;

(3)注意:partition的位置要放在设定分隔字符语句之前。

没有在HDFS中刷新出分区数据信息,导致无法识别。

修复分区:

msck repair table 表名;

分桶表(Bucketed Table)

分桶表是将表的数据按照哈希函数对某个列的值进行分桶,将数据均匀地分布到不同的桶中

创建分桶表语法:

create [external] table 表名(
	字段名 字段类型 [comment '注释'],
	字段名 字段类型 [comment '注释'],
	...
) 
[clustered by (字段名) into 分桶数 buckets]

[分桶数]代表分桶的数量。而如果没有额外修改reduce数量时,默认分桶数和reduce值一致

分桶表的一些优点:

1)提升过滤性能

基于分桶字段的where过滤查询时,可减少全表扫描

2)提升join多表查询\

JOIN时可以提高MapReduce程序效率,减少笛卡尔积数量

3)提升分组效率

以某列作为分组时,可减少全表扫描,进入到分桶表中处理,效率高一些
4)提升抽样处理

当数据量特别大时,对全体数据进行处理存在困难,抽样就显得尤其重要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值