数据仓库为何要做表分区

为什么做分区

分区表将数据组织成分区,主要可以提高数据的查询速度。
如果把一年或者一个月的日志文件存放在一个表下,那么数据量会非常的大,当查询这个表中某一天的日志文件的时候,查询速度还非常的慢,这时候可以采用分区表的方式,把这个表根据时间点再划分为小表。这样划分后,查询某一个时间点的日志文件就会快很多,因为这是不需要进行全表扫描。
Hive中的分区是根据“分区列”的值对表的数据进行粗略的划分,Hive中一个表对应一个目录,再根据分区列在这个表目录下创建子目录,每个子目录名就是分区列的名字。分区列定义与表中字段相似,但是与表中的字段无关,是独立的列。这样就加快了数据查询的速度,因为不会对这个表中进行全盘扫描了。

如何做分区

(1)建表语句

create table if not exists latte_d_test

(

uid string comment “用户ID”,

vld_flg string comment “该条记录是否有效,1-有效,0-无效”

)

COMMENT “test表”

PARTITIONED BY (day STRING);
(2)设置分区表参数

set hive.exec.dynamic.partition = true;

设置为true表示开启动态分区功能(默认为false)。

set hive.exec.dynamic.partition.mode = nonstrict;

设置为nonstrict,表示允许所有分区都是动态的(默认为strict)。
(3)插入数据

insert overwrite table latte_d_test partition(day)

select uid,

‘1’,

‘2016-10-10’

from test

猜你喜欢

转载自blog.csdn.net/weixin_42874157/article/details/88866095