tencent cloud

文档反馈

查询分区表

最后更新时间:2022-08-16 09:41:59

    若用户将数据以分区目录的方式进行存储,可以减少 DLC 计算任务的数据扫描量,大幅度提升运算性能。对数据进行分区最常见的做法是将数据按照时间存储到不同目录下,例如,将同一天产生的数据放到一个目录下,可以按照“年-月-日”组织多层数据目录。DLC 中的同一个表及其分区必须使用相同的数据格式。

    创建分区表

    创建分区表需要在建表语句中指定分区字段。

    添加分区数据

    在创建数据表时指定分区仅是配置了分区字段,不能立刻执行查询语句获取数据。用户需要将分区数据添加至数据表。若有新的分区数据添加至数据目录,则需要添加分区信息到数据表。

    手动添加分区

    使用 ALTER TABLE ADD PARTITIO 语句,会把指定的分区目录添加至数据表。若区目录兼容 Hive 的分区规则(分区列名 = 分区列值),则无需指定数据路径。否则,需要显示指定数据路径。

    • 示例1:单个分区目录,分区目录符合

      ALTER TABLE tabel_demo ADD
      PARTITION (dt = '2021-01-01');
      
    • 示例2:多层分区目录嵌套

      ALTER TABLE tabel_demo ADD
      PARTITION (year = '2021', month='01', day='01');
      
    • 示例3:显示指定分区路径

      ALTER TABLE tabel_demo ADD
      PARTITION (year = '2021', month='01', day='01') LOCATION 'cosn://tablea_demo' ;
      

    自动添加分区

    使用 MSCK REPAIR TABLE 语句,扫描在建表时指定的数据目录。若存在新的分区目录,则系统会自动将这些分区添加到数据表的元数据信息中。示例如下:

    MSCK REPAIR TABLE table_demo
    

    系统约束

    • MSCK REPAIR TABLE仅向数据表元数据添加分区,不会删除它们。想要删除已经添加的分区,可执行语句ALTER TABLE table-name DROP PARTITION
    • 若数据量非常大,MSCK REPAIR TABLE不是推荐的方案。系统会扫描全量数据,并且消耗很长的时间,可能会导致任务超时,使得数据表的分区信息处于不完整状态。
    • 分区目录必须兼容 Hive 的分区规则:分区列名=分区列值,若不一致,请使用ALTER TABLE ADD PARTITIO加载分区。
    • 请确保在单独的文件夹层次结构中保留单独表的数据。例如,假设 COS 服务中有表 A 的数据cosn://tablea_a和表 B 的数据s3://table_a/table_b如果两个表都按字符串进行分区,MSCK REPAIR TABLE会将表 B 的分区添加到表 A。为了避免这种情况,请使用单独的文件夹结构,如cosn://tablea_acosn://tablea_b
    • 该语句可能会导致 COS 服务的数据读写开销,可参见 COS 服务的收费标准
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持