• doris 动态分区


    下面是个人测试例子:详细请参考官网(特别详细):http://doris.incubator.apache.org/master/zh-CN/administrator-guide/dynamic-partition.html#%E7%A4%BA%E4%BE%8B

    PARTITIONS 分区的基本操作:
    官网:http://doris.incubator.apache.org/master/zh-CN/administrator-guide/alter-table/alter-table-temp-partition.html#%E8%A7%84%E5%88%99

    查看分区:   

    SHOW TEMPORARY PARTITIONS FROM tb_user; //临时分区
    SHOW PARTITIONS FROM tb_user; 

    添加临时分区:

    ALTER TABLE tbl1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN("2020-02-01");
    
    ALTER TABLE tbl2 ADD TEMPORARY PARTITION tp1 VALUES [("2020-01-01"), ("2020-02-01"));
    
    ALTER TABLE tbl1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN("2020-02-01")
    ("in_memory" = "true", "replication_num" = "1")
    DISTRIBUTED BY HASH(k1) BUCKETS 5;

    删除临时分区

    可以通过 ALTER TABLE DROP TEMPORARY PARTITION 语句删除一个表的临时分区:

         

    原理

    在某些使用场景下,用户会将表按照天进行分区划分,每天定时执行例行任务,这时需要使用方手动管理分区,否则可能由于使用方没有创建分区导致数据导入失败,这给使用方带来了额外的维护成本。

    在实现方式上, FE会启动一个后台线程,根据fe.conf中dynamic_partition_enable 及 dynamic_partition_check_interval_seconds参数决定该线程是否启动以及该线程的调度频率。每次调度时,会在注册表中读取动态分区表的属性,并根据动态分区属性动态添加及删除分区。
    建表时,可以在 PROPERTIES 中指定以下dynamic_partition属性,表示这个表是一个动态分区表。

    实例:

    CREATE TABLE IF NOT EXISTS user2
    (
        `siteid` INT DEFAULT '10',
        `citycode` INT,
        `username` VARCHAR(32) DEFAULT ''
    )
    ENGINE=olap
    PARTITION BY RANGE (`citycode`)
    (
    PARTITION p20210605 VALUES LESS THAN ("20210606"),
    PARTITION p20210606 VALUES LESS THAN ("20210607"),
    PARTITION p20210607 VALUES LESS THAN ("20210608"),
    PARTITION p20210608 VALUES LESS THAN ("20210609")
    )
    DISTRIBUTED BY HASH(siteid) 
    BUCKETS 5
    PROPERTIES(
    "replication_num" = "2",
    "storage_medium" = "SSD",
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.start" = "-3",
    "dynamic_partition.end" = "3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "10"
     );

    创建一张动态分区表,指定开启动态分区特性,以当天为2021-06-27为例,在每次调度时,会删除分区上界小于 2021-06-07 的分区,为了避免删除非动态创建的分区,动态删除分区只会删除分区名符合动态创建分区规则的分区,例如分区名为a1, 则即使分区范围在待删除的分区范围内,也不会被删除。同时在调度时会提前创建今天以及以后3天(总共4天)的分区(若分区已存在则会忽略),分区名根据指定前缀分别为p20210607 p20210608  p20210609  p20210610,每个分区的分桶数量为32。同时会删除 p20210603 的分区。

    如果没有设置 dynamic_partition.start,则不会删除历史分区

    test :      

    insert into user2 values(1,20210607,"sea1")
    insert into user2 values(2,20210608,"sea2")
    insert into user2 values(3,20210609,"sea3")
    insert into user2 values(4,202106010,"sea4")  ...

  • 相关阅读:
    点击空白处隐藏盒子
    java缓存技术
    使用Java处理大文件
    java实现把一个大文件切割成N个固定大小的文件
    笔记:Java的IO性能调整
    NIO之轻松读取大文件
    java读写文件,读超大文件
    java读取大文件 超大文件的几种方法
    java web服务器cpu占用过高的处理
    软件开发各类文档模板
  • 原文地址:https://www.cnblogs.com/lshan/p/14863510.html
Copyright © 2020-2023  润新知