大数据分析——Apache Doris(四十六)

251 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情

 使用方式

 建表

建表时,可以在 PROPERTIES 中指定属性 "colocate_with" = "group_name",表示这个表是一个 Colocation Join 表,并且归属于一个指定的 Colocation Group。

示例:

CREATE TABLE tbl ( k1 int ,  v1 int sum )DISTRIBUTED BY HASH ( k1 )BUCKETS 8PROPERTIES (    "colocate_with" = "group1");

如果指定的 Group 不存在,则 Doris 会自动创建一个只包含当前这张表的 Group。

如果 Group 已存在,则 Doris 会检查当前表是否满足 Colocation Group Schema。

如果满足,则会创建该表,并将该表加入 Group。同时,表会根据已存在的 Group 中的数据分布规则创建分片和副本。

Group 归属于一个 Database,Group 的名字在一个 Database 内唯一。在内部存储是 Group 的全名为 dbId_groupName,但用户只感知 groupName。

 删表

当 Group 中最后一张表彻底删除后(彻底删除是指从回收站中删除。通常,一张表通过 DROP TABLE 命令删除后,会在回收站默认停留一天的时间后,再删除),该 Group 也会被自动删除

 查看 Group
SHOW PROC '/colocation_group';
GroupId: 一个 Group 的全集群唯一标识,前半部分为 db id,后半部分为 group id。GroupName: Group 的全名。TabletIds: 该 Group 包含的 Table 的 id 列表。BucketsNum: 分桶数。ReplicationNum: 副本数。DistCols: Distribution columns,即分桶列类型。IsStable: 该 Group 是否稳定(稳定的定义,见 Colocation 副本均衡和修复 一节)。

通过以下命令可以进一步查看一个 Group 的数据分布情况:

 修改表 Colocate Group 属性

可以对一个已经创建的表,修改其 Colocation Group 属性。示例:

ALTER TABLE tbl SET  ( "colocate_with" = "group2" );

l 如果该表之前没有指定过 Group,则该命令检查 Schema,并将该表加入到该 Group(Group 不存在则会创建)。

l 如果该表之前有指定其他 Group,则该命令会先将该表从原有 Group 中移除,并加入新 Group(Group 不存在则会创建)。

也可以通过以下命令,删除一个表的 Colocation 属性:

ALTER TABLE tbl SET  ( "colocate_with" = "" );
 其他相关操作

当对一个具有 Colocation 属性的表进行增加分区(ADD PARTITION)、修改副本数时,Doris 会检查修改是否会违反 Colocation Group Schema,如果违反则会拒绝