创建表的时候,可以设置普通列和分区列。在绝大多数情况下,可以把普通列理解成数据文件的数据,而分区列可以理解成文件系统的目录。所以表的存储空间的占用,讲的是普通列的空间占用。分区列虽然不直接存储数据,但是如同文件系统里的目录,可以起到方便数据管理,并在计算只指定具体的分区的时候,只查询对应分区减少计算量的作用。
分区列的设置
创建分区表的语法可以参考这里。这里分别举2个例子方便理解:
从这里可以看到分区表的创建方式。目前分区列只支持STRING类型。BIGINT目前是还在测试中,并无法保证其计算准确性,暂时还不建议大家使用。
目前分区表的分区列的个数不能超过6级,也可以理解成底层存储数据的目录层数不能超过6层。
分区的创建
关于分区和分区键的区别,可以先参考这个说明。对应到前面的说明,分区键的设置只是设置了一个规范,定义了表下的文件存储的目录规则需要是ds='xxx'。然后分区ds='20150101'对应一个目录,分区ds='20150102'对应到另外一个目录。
分区的作用
分区的作用主要有2部分。其一是能方便数据的管理。使用了分区后,一张表的数据被分到多个不同的分区里。比如日志表如果我们根据日期(天)进行分区,那么每个分区里都是单独一天的数据。如果有一天我们希望能归档历史数据到某个地方,或者删除过旧的数据&#x