impala建Kudu表语句中的PARTITION BY的作用

在impala中创建kudu表的时候有一个PARTITION BY的参数选项,这个参数是啥意思呢?

各位苦逼大数据DBA在impala shell中建kudu表的时候一定用过这个PARTITION BY参数,像我这样不学无术的兄弟肯定是一把梭,Ctrl C,Ctrl V大法用起来,结果发现建好的kudu表性能差劲得一逼,还不如回去用mysql。。。这个时候很有可能就是你的PARTITION BY参数写得不对。

用我贫瘠的英文能力搜索了文档,发现这个参数是一个关系到kudu与mysql根本区别的重要参数:分区数
首先看一个例子~
PARTITION BY HASH (province) PARTITIONS 34, RANGE (birth_year) (partition values<1556640000000, partition 1556640000000<=values<1588262400000, partition 1588262400000<=values<1619798400000, partition 1619798400000<=values)
假如你要在impala中建一张kudu表,存放中国所有人的信息,那么分区时用省份对整张表进行分区是一个不错的方案。
众所周知,中国有34个省级行政区(台湾是中国的一部分!(声嘶力竭)),所以使用省级行政区对这张有13亿条记录的表进行分区时可分为34个区,PATITIONS参数设置为34,另外,又可以通过出生年份(birth_year)对RANGE参数进行进一步分区。(这里有一个不合理的地方——如果起始时间不够久远的话,会漏掉活了几百几千年的仙人们,另外每过一年,就得改一下表结构,增加一个年份的分区)

猜你喜欢

转载自blog.csdn.net/Lucien_Hu/article/details/87863256