请说明在 Apache Kudu 中创建一张表的具体步骤,并列举几种常见的表结构设计。
考察说明
考查对 Kudu 建表语法和典型表结构设计的掌握程度。
回答思路
- 【回答框架 1】Kudu 建表主要使用 CREATE TABLE 语句,需指定表名、列定义(含类型和是否可空)以及主键,主键至少一列且不可变,同时可设置分区方式,如哈希分区或范围分区,并指定分区列和数量。
- 【回答框架 2】常见表结构包括:按时间戳或 ID 进行哈希分区的日志表,适合写入密集和范围查询;按日期列进行范围分区的业务表,便于按时间段管理数据;组合分区表则先哈希再范围分区,用于大规模数据且需要灵活裁剪。
- 【回答框架 3】建表时还需考虑列式存储的排序特征,将频繁过滤的列作为主键前缀,以提高扫描效率;同时合理设置副本因子和存储属性,但默认值通常满足多数场景。
- 【回答框架 4】对于已有表,可通过 ALTER TABLE 增加或删除列、修改属性和重新分区,但主键不可修改,因此在设计阶段应尽量确定主键结构。
- 【回答框架 5】实际应用中应结合查询模式和写入吞吐,通过测试验证分区策略和主键设计,避免因分区不当导致数据倾斜或扫描效率下降。
- 【关键点 1】创建表需定义主键、分区方式和列类型,常用 SQL 语句为 CREATE TABLE。
- 【关键点 2】常见表结构包括哈希分区、范围分区和组合分区,分别适用于不同访问模式。
- 【关键点 3】主键设计直接影响数据分布和查询性能,应选择稳定且选择性高的列。
- 【关键点 4】列式存储下,主键前缀影响扫描裁剪,合理设计可提升查询效率。
- 【关键点 5】分区参数需结合数据量和负载进行调整,必要时进行压测验证。
- 【易错点 1】主键设计不当可能导致数据倾斜或无法高效裁剪,需避免使用高基数但波动大的列。
- 【易错点 2】分区数量设置过高或过低都会影响性能,需根据集群规模和并发调整。
- 【易错点 3】修改主键或分区方式在 Kudu 中不支持,前期规划不正确会造成重建表成本。