本文主要是介绍kudu表分区,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
kudu表的数据结构是列式存储,但也支持像mysql那样进行检索,而且与spark、impala等现有的应用完美契合,可以说是是大数据平台上支持快速sql查询的上佳选择了。它的好处这里不多说啦,公司的大数据查询有一部分是用到这个技术,这里就列几个其他博客里不常见的涉及kudu表分区的语句(其实官网里都有,只是中文博客里还没见到)。
分区有两种方式,hash 和range分区,
hash分区的语句:CREATE TABLE kudu_table ( id BIGINT, name STRING, PRIMARY KEY(id) ) PARTITION BY HASH PARTITIONS 16 STORED AS KUDU;
从别的表拉数据新建kudu表的语句:CREATE TABLE kudu_table PRIMARY KEY (name,age) PARTITION BY HASH(name,age) PARTITIONS 8 STORED AS KUDU AS SELECT name, age FROM old_table;
这里有一个点就是hash分区是可以指定两个列的,注意hash(a),hash(b)和hash(a,b)的含义并不一样。还有就是主键的设计,主键是不允许重复的,重复时后插入的数据会报错(impala中会导致插入无效)
range分区的语句:CREATE TABLE new_table PRIMARY KEY (name,age) PARTITION BY range(age) ( PARTITION 1<= VALUES <10, PARTITION 10<= VALUES <20, PARTITION 20<= VALUES <30 ) STORED AS KUDU AS SELECT name, age FROM lol;
与mysql类似的,kudu中range分区的表也是支持增加分区的,增加分区的语句为:alter table new_table add range partition 30<=values<40
这篇关于kudu表分区的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!