Flink-StarRocks详解:第三部门StarRocks分区分桶(第53天)

打印 上一主题 下一主题

主题 551|帖子 551|积分 1653


媒介

本文为Flink-StarRocks详解后续章节:主要详解StarRocks分区分桶
由于篇幅过长,后续接着下面进行详解:
 StarRocks查询数据湖
 实现即席查询案例
2.3 数据分布

建表时,可以通过设置公道的分区和分桶,实现数据均匀分布和查询性能提升。数据均匀分布是指数据按照肯定规则分别为子集,并且平衡地分布在不同节点上。查询时能够有用裁剪数据扫描量,最大限度地利用集群的并发性能,从而提升查询性能。
说明
自 2.5.7 版本起,在建表和新增分区时可以不设置分桶数量 (BUCKETS)。StarRocks 默认自动设置分桶数量,如果自动设置分桶数量后性能未能到达预期,并且比较熟悉分桶机制,则也可以手动设置分桶数量。
自 3.1 版本起,在建表和新增分区时可以不设置分桶键(即 DISTRIBUTED BY 子句)。StarRocks 默认利用随机分桶,将数据随机地分布在分区的所有分桶中。
2.3.1 数据分布概览

2.3.1.1 常见的数据分布方式

现代分布式数据库中,常见的数据分布方式有如下几种:Round-Robin、Range、List 和 Hash。如下图所示:

 Round-Robin:以轮询的方式把数据逐个放置在相邻节点上。
 Range:按区间进行数据分布。如上图所示,区间 [1-3]、[4-6] 分别对应不同的范围 (Range)。
 List:直接基于离散的各个取值做数据分布,性别、省份等数据就满足这种离散的特性。每个离散值会映射到一个节点上,多个不同的取值可能也会映射到雷同节点上。
 Hash:通过哈希函数把数据映射到不同节点上。
为了更灵活地分别数据,除了单独采用上述数据分布方式之一以外,还可以根据具体的业务场景需求组合利用这些数据分布方式。常见的组合方式有 Range+Hash、List+Hash。
2.3.1.2 StarRocks的数据分布方式

StarRocks 支持单独和组合利用数据分布方式。
说明:除了常见的分布方式外, StarRocks 还支持了 Random 分布,可以简化分桶设置。
并且 StarRocks 通过设置分区 + 分桶的方式来实现数据分布。
 第一层为分区:在一张表中,可以进行分区,支持的分区方式有表达式分区、Range 分区和 List 分区,或者不分区(即全表只有一个分区)。
 第二层为分桶:在一个分区中,必须进行分桶。支持的分桶方式有哈希分桶和随机分桶。


2.3.1.3 分区

分区用于将数据分别成不同的区间。分区的主要作用是将一张表按照分区键拆分成不同的管理单元,针对每一个管理单元选择相应的存储策略,比如分桶数、冷热策略、存储介质、副本数等。StarRocks 支持在一个集群内利用多种存储介质,可以将新数据所在分区放在 SSD 盘上,利用 SSD 优秀的随机读写性能来提高查询性能,将旧数据存放在 SATA 盘上,以节省数据存储的成本。

选择分区列和分区粒度
 选择公道的分区列可以有用的裁剪查询数据时扫描的数据量。业务体系中⼀般会选择根据时间进行分区,以优化大量删除过期数据带来的性能问题,同时也方便冷热数据分级存储,此时可以利用时间列作为分区列进行表达式分区或者 Range 分区。此外,如果经常按照枚举值查询数据和管理数据,则可以选择枚举值的列作为分区列进行表达式分区或者 List 分区。
 选择分区单元时须要综合思量数据量、查询特点、数据管理粒度等因素。
 示例 1:表单月数据量很小,可以按月分区,相比于按天分区,可以减少元数据数量,从而减少元数据管理和调度的资源斲丧。
 示例 2:表单月数据量很大,而大部门查询条件精确到天,如果按天分区,可以做有用的分区裁剪,减少查询扫描的数据量。
 示例 3:数据要求按天过期,可以按天分区。
2.3.1.4 分桶

一个分区按分桶方式被分成了多个桶 bucket,每个桶的数据称之为一个 tablet。
分桶方式:StarRocks 支持随机分桶(自 v3.1)和哈希分桶。
 随机分桶,建表和新增分区时无需设置分桶键。在同一分区内,数据随机分布到不同的分桶中。
 哈希分桶,建表和新增分区时须要指定分桶键。在同一分区内,数据按照分桶键分别分桶后,所有分桶键的值雷同的行会唯一分配到对应的一个分桶。
分桶数量:默认由 StarRocks 自动设置分桶数量(自 v2.5.7)。同时也支持手动设置分桶数量。
2.3.2 创建分区

按照分区类型可以分为表达式分区、Range分区和List分区。
按照分区创建方式可以分为手动创建分区、批量创建分区和动态分区。
2.3.2.1 表达式分区

自 v3.0 起,StarRocks 支持表达式分区(原称自动创建分区),更加灵活易用,适用于大多数场景,比如按照连续日期范围或者枚举值来查询和管理数据。
仅须要在建表时利用分区表达式(时间函数表达式或列表达式),即可实现导入数据时自动创建分区,不须要预先创建出分区或者配置动态分区属性。
2.3.2.1.1 时间函数表达式分区(自v3.1)

如果经常按照连续日期范围来查询和管理数据,则只须要在时间函数分区表达式中,指定一个日期类型(DATE 或者 DATETIME )的分区列,以及指定分区粒度(年、月、日或小时)。StarRocks 会根据导入的数据和分区表达式,自动创建分区并且设置分区的起止时间。
不过在一些特别场景下,比如汗青数据按月分别分区、近来数据按天分别分区,则须要采用 Range 分区创建分区。
(一)语法
  1. PARTITION BY expression
  2. ...
  3. [ PROPERTIES( 'partition_live_number' = 'xxx' ) ]
  4. expression ::=
  5.     { date_trunc ( <time_unit> , <partition_column> ) |
  6.       time_slice ( <partition_column> , INTERVAL <N> <time_unit> [ , boundary ] ) }
复制代码
(二)参数解释


注意:StarRocks 自动创建分区数量上限默以为 4096,由 FE 配置参数 max_automatic_partition_number 决定。该参数可以防止由于误利用而创建大量分区。
(三)示例
示例一:
假设经常按天查询数据,则建表时可以利用分区表达式 date_trunc() ,并且设置分区列为 event_day ,分区粒度为 day,实现导入数据时自动按照数据所属日期分别分区。将同一天的数据存储在一个分区中,利用分区裁剪可以显著提高查询服从。
  1. CREATE TABLE test.site_express1 (
  2.     event_day DATETIME NOT NULL,
  3.     site_id INT DEFAULT '10',
  4.     city_code VARCHAR(100),
  5.     user_name VARCHAR(32) DEFAULT '',
  6.     pv BIGINT DEFAULT '0'
  7. )
  8. DUPLICATE KEY(event_day, site_id, city_code, user_name)
  9. PARTITION BY date_trunc('day', event_day)
  10. DISTRIBUTED BY HASH(event_day, site_id)
  11. PROPERTIES (
  12. "replication_num" = "1"
  13. );
复制代码
导入如下两行数据,则 StarRocks 会根据导入数据的日期范围自动创建两个分区 p20230226、p20230227,范围分别为 [2023-02-26 00:00:00,2023-02-27 00:00:00)、[2023-02-27 00:00:00,2023-02-28 00:00:00)。如果后续导入数据的日期属于这两个范围,则都会自动分别至对应分区。
  1. -- 导入两行数据
  2. INSERT INTO test.site_access1
  3.     VALUES ("2023-02-26 20:12:04",002,"New York","Sam Smith",1),
  4.            ("2023-02-27 21:06:54",001,"Los Angeles","Taylor Swift",1);
复制代码
查询分区
– 查询分区
SHOW PARTITIONS FROM test.site_express1;

示例二:
假设经常按周查询数据,则建表时可以利用分区表达式 time_slice(),设置分区列为 event_day,分区粒度为七天。将一周的数据存储在一个分区中,利用分区裁剪可以显著提高查询服从。
  1. CREATE TABLE test.site_express2(
  2.     event_day DATETIME NOT NULL,
  3.     site_id INT DEFAULT '10',
  4.     city_code VARCHAR(100),
  5.     user_name VARCHAR(32) DEFAULT '',
  6.     pv BIGINT DEFAULT '0'
  7. )
  8. DUPLICATE KEY(event_day, site_id, city_code, user_name)
  9. PARTITION BY time_slice(event_day, INTERVAL 7 day)
  10. DISTRIBUTED BY HASH(event_day, site_id)
  11. PROPERTIES (
  12. "replication_num" = "1"
  13. );
复制代码
导入如下几行数据,则 StarRocks 会根据导入数据的日期范围自动创建两个分区 p20230220、p20230227,范围分别为 [2023-02-20 00:00:00,2023-02-27 00:00:00)、[2023-02-27 00:00:00,2023-03-06 00:00:00)。如果后续导入数据的日期属于这两个范围,则都会自动分别至对应分区。
  1. -- 导入三行数据
  2. INSERT INTO test.site_express2
  3.     VALUES ("2023-02-20 21:06:54",001,"Los Angeles","Taylor Swift",1),
  4.     ("2023-02-26 20:12:04",002,"New York","Sam Smith",1),
  5.            ("2023-02-27 21:06:54",003,"Los Angeles","Taylor Swift",1);
  6. 查询分区
  7. SHOW PARTITIONS FROM test.site_express2;
复制代码
2.3.2.1.2 列表达式分区(自v3.1)

如果经常按照枚举值来查询和管理数据,则只须要指定表示类型的列为分区列,StarRocks 会根据导入的数据的分区列值,来自动分别并创建分区。同Hive分区的用法。
不过在一些特别场景下,比如表中包含表示都会的列,经常按照国家和都会来查询和管理数据,希望将同属于一个国家的多个都会的数据存储在一个分区中,则须要利用 List 分区。
(一)语法
  1. PARTITION BY expression
  2. ...
  3. [ PROPERTIES( 'partition_live_number' = 'xxx' ) ]
  4. expression ::=
  5.     ( <partition_columns> )
  6.    
  7. partition_columns ::=
  8.     <column>, [ <column> [,...] ]
复制代码
(二)参数解释

(三)利用说明
(1)StarRocks 自动创建分区数量上限默以为 4096,由 FE 配置参数 max_automatic_partition_number 决定。该参数可以防止由于误利用而创建大量分区。
(2)分区命名规则:如果存在多个分区列,则不同分区列的值以下划线(_)连接。比方:存在有两个分区列 dt 和 city,均为字符串类型,导入一条数据 2022-04-01, beijing,则自动创建的分区名称为 p20220401_beijing。
(四)示例
假设经常按日期范围和特定都会查询机房收费明细,则建表时可以利用分区表达式指定分区列为日期 dt 和都会 city。如许属于雷同日期和都会的数据分组到同一个分区中,利用分区裁剪可以显著提高查询服从。
  1. CREATE TABLE test.recharge_express(
  2.     id bigint,
  3.     user_id bigint,
  4.     recharge_money decimal(32,2),
  5.     city varchar(20) not null,
  6.     dt varchar(20) not null
  7. )
  8. DUPLICATE KEY(id)
  9. PARTITION BY (dt,city)
  10. DISTRIBUTED BY HASH(`id`)
  11. PROPERTIES (
  12. "replication_num" = "1"
  13. );
复制代码
导入一条数据。
  1. INSERT INTO test.recharge_express
  2. VALUES (1, 1, 1, 'Houston', '2022-04-01');
复制代码
查察具体分区。返回效果表现,StarRocks 根据导入数据的分区列值自动创建一个分区 p20220401_Houston ,如果后续导入数据的分区列 dt 和 city 的值是 2022-04-01和 Houston,则都会被分别至该分区。
说明:分区中只能包含各分区列的一个值,如果须要一个分区中包含各分区列的多值,请利用 List 分区。
查询分区
  1. SHOW PARTITIONS from test.recharge_express;
复制代码
2.3.2.2 Range 分区

Range 分区适用于简朴且具有连续性的数据,如时间序列数据(日期或时间戳)或连续的数值数据。并且经常按照连续日期/数值范围,来查询和管理数据。以及一些特别场景,比如一张表的分区粒度不同等,汗青数据须要按月分别分区,而近来数据须要按天分别分区。
StarRocks 会根据显式定义的范围与分区的映射关系将数据分配到相应的分区中。
示例:
  1. CREATE TABLE test.site_access5(
  2.     event_day DATE,
  3.     site_id INT DEFAULT '10',
  4.     city_code VARCHAR(100),
  5.     user_name VARCHAR(32) DEFAULT '',
  6.     pv BIGINT SUM DEFAULT '0'
  7. )
  8. AGGREGATE KEY(event_day, site_id, city_code, user_name)
  9. PARTITION BY RANGE(event_day)(
  10.     PARTITION p1 VALUES LESS THAN ("2020-01-31"),
  11.     PARTITION p2 VALUES LESS THAN ("2020-02-29"),
  12.     PARTITION p3 VALUES LESS THAN ("2020-03-31")
  13. )
  14. DISTRIBUTED BY HASH(site_id)
  15. PROPERTIES (
  16. "replication_num" = "1"
  17. );
复制代码
2.3.2.3 List分区

自 v3.1 起,StarRocks 支持 List 分区,数据按照显式定义的枚举值列表进行分区,适用于按枚举值来查询和管理数据。
2.3.2.3.1 功能先容

须要显式列出每个 List 分区所包含的枚举值列表,并且值不须要连续,区别于包含连续日期或者数值范围的 Range 分区。当新数据导入表中时,StarRocks 会根据数据的分区列值与分区的映射关系将数据分配到相应的分区中。

List 分区适用于存储具有少量枚举值列的数据、并且经常按列的枚举值来查询和管理数据的场景。比方表示地理位置、状态、种别的列。列的每个值都代表一种独立的种别。按照列的枚举值对数据进行分区,可以提高查询性能和方便数据管理。
尤其适用于一个分区中须要包含各分区列的多个值的场景。比方表中存在 City 列表示个体所属的都会,并且经常按照州和都会查询和管理数据,则建表时可以利用 City 列作为分区列进行 List 分区,指定同属一个州的多个都会的数据分在同一分区 PARTITION pCalifornia VALUES IN (“Los Angeles”,“San Francisco”,“San Diego”),可以加速查询和方便数据管理。
2.3.2.3.2 利用方式

2.3.2.3.2.1 语法

  1. PARTITION BY LIST (partition_columns)(
  2.     PARTITION <partition_name> VALUES IN (value_list)
  3.     [, ...]
  4. )
  5. partition_columns::=
  6.     <column> [,<column> [, ...] ]
  7. value_list ::=
  8.     value_item [, value_item [, ...] ]
  9. value_item ::=
  10.     { <value> | ( <value> [, <value>, [, ...] ] ) }   
复制代码
2.3.2.3.2.2 参数说明


2.3.2.3.2.3 示例

示例一
假设经常按照州或都会查询机房收费明细,则建表时可以指定分区列为都会 city ,并且指定每个分区所包含都会同属一个州,如许可以加速查询特定州或都会的数据,并且方便按照特定州或都会进行数据管理。
  1. CREATE TABLE test.recharge_list(
  2.     id bigint,
  3.     user_id bigint,
  4.     recharge_money decimal(32,2),
  5.     city varchar(20) not null,
  6.     dt varchar(20) not null
  7. )
  8. DUPLICATE KEY(id)
  9. PARTITION BY LIST (city) (
  10.    PARTITION pCalifornia VALUES IN ("Los Angeles","San Francisco","San Diego"), -- 这些城市同属一个州
  11.    PARTITION pTexas VALUES IN ("Houston","Dallas","Austin")
  12. )
  13. DISTRIBUTED BY HASH(`id`)
  14. PROPERTIES (
  15. "replication_num" = "1"
  16. );
复制代码
示例二
假设经常按日期范围和特定州或都会查询机房收费明细,则建表时可以指定分区列为日期 dt 和都会 city。如许属于特定日期和特定州或都会的数据分组到同一个分区中,以加速查询和方便数据管理。
  1. CREATE TABLE test.recharge_list2(
  2.     id bigint,
  3.     user_id bigint,
  4.     recharge_money decimal(32,2),
  5.     city varchar(20) not null,
  6.     dt varchar(20) not null
  7. )
  8. DUPLICATE KEY(id)
  9. PARTITION BY LIST (dt,city) (
  10.    PARTITION p202204_California VALUES IN (
  11.        ("2022-04-01", "Los Angeles"),
  12.        ("2022-04-01", "San Francisco"),
  13.        ("2022-04-02", "Los Angeles"),
  14.        ("2022-04-02", "San Francisco")
  15.     ),
  16.    PARTITION p202204_Texas VALUES IN (
  17.        ("2022-04-01", "Houston"),
  18.        ("2022-04-01", "Dallas"),
  19.        ("2022-04-02", "Houston"),
  20.        ("2022-04-02", "Dallas")
  21.    )
  22. )
  23. DISTRIBUTED BY HASH(`id`)
  24. PROPERTIES (
  25. "replication_num" = "1"
  26. );
复制代码
2.3.2.3.3 利用限定

 不支持动态和批量创建 List 分区。
 StarRocks 存算分离模式从 3.1.1 版本开始支持该功能。
 利用 ALTER TABLE <table_name> DROP PARTITION <partition_name>; 分区直接被删除并且不能被恢复。
 List 分区暂时不支持备份与恢复。
 异步物化视图暂不支持基于利用 List 分区的基表创建。
2.3.2.4 手动创建分区

选择公道的分区键可以有用的裁剪扫描的数据量。现在仅支持分区键的数据类型为日期和整数类型。在现实业务场景中,一般从数据管理的角度选择分区键,常见的分区键为时间或者区域。
如上面range分区创建的test.site_access5
2.3.2.5 批量创建分区

建表时和建表后,支持批量创建分区,通过 START、END 指定批量分区的开始和结束,EVERY 子句指定分区增量值。此中,批量分区包含 START 的值,但是不包含 END 的值。分区的命名规则同动态分区一样。
 建表时批量创建日期分区
当分区键为日期类型时,建表时通过 START、END 指定批量分区的开始日期和结束日期,EVERY 子句指定分区增量值。并且 EVERY 子句中用 INTERVAL 关键字表示日期间隔,现在支持日期间隔的单元为 HOUR(自 3.0 版本起)、DAY、WEEK、MONTH、YEAR。
如下示例中,批量分区的开始日期为 2021-01-01 和结束日期为 2021-01-04,增量值为一天:
  1. CREATE TABLE test.site_access6(
  2.     datekey DATE,
  3.     site_id INT,
  4.     city_code SMALLINT,
  5.     user_name VARCHAR(32),
  6.     pv BIGINT DEFAULT '0'
  7. )
  8. DUPLICATE KEY(datekey, site_id, city_code, user_name)
  9. PARTITION BY RANGE (datekey) (
  10.     START ("2021-01-01") END ("2021-01-04") EVERY (INTERVAL 1 DAY)
  11. )
  12. DISTRIBUTED BY HASH(site_id)
  13. PROPERTIES (
  14.     "replication_num" = "1"
  15. );
复制代码
则相称于在建表语句中利用如下 PARTITION BY 子句:
  1. PARTITION BY RANGE (datekey) (
  2.     PARTITION p20210101 VALUES [('2021-01-01'), ('2021-01-02')),
  3.     PARTITION p20210102 VALUES [('2021-01-02'), ('2021-01-03')),
  4.     PARTITION p20210103 VALUES [('2021-01-03'), ('2021-01-04'))
  5. )
复制代码
 建表时批量创建不同日期间隔的日期分区
建表时批量创建日期分区时,支持针对不同的日期分区区间(日期分区区间不能相重合),利用不同的 EVERY 子句指定日期间隔。一个日期分区区间,按照对应 EVERY 子句定义的日期间隔,批量创建分区,比方:
  1. CREATE TABLE test.site_access7(
  2.     datekey DATE,
  3.     site_id INT,
  4.     city_code SMALLINT,
  5.     user_name VARCHAR(32),
  6.     pv BIGINT DEFAULT '0'
  7. )
  8. DUPLICATE KEY(datekey, site_id, city_code, user_name)
  9. PARTITION BY RANGE (datekey) (
  10.     START ("2019-01-01") END ("2021-01-01") EVERY (INTERVAL 1 YEAR),
  11.     START ("2021-01-01") END ("2021-05-01") EVERY (INTERVAL 1 MONTH),
  12.     START ("2021-05-01") END ("2021-05-04") EVERY (INTERVAL 1 DAY)
  13. )
  14. DISTRIBUTED BY HASH(site_id)
  15. PROPERTIES (
  16.     "replication_num" = "1"
  17. );
  18. 则相当于在建表语句中使用如下 PARTITION BY 子句:
  19. PARTITION BY RANGE (datekey) (
  20.     PARTITION p2019 VALUES [('2019-01-01'), ('2020-01-01')),
  21.     PARTITION p2020 VALUES [('2020-01-01'), ('2021-01-01')),
  22.     PARTITION p202101 VALUES [('2021-01-01'), ('2021-02-01')),
  23.     PARTITION p202102 VALUES [('2021-02-01'), ('2021-03-01')),
  24.     PARTITION p202103 VALUES [('2021-03-01'), ('2021-04-01')),
  25.     PARTITION p202104 VALUES [('2021-04-01'), ('2021-05-01')),
  26.     PARTITION p20210501 VALUES [('2021-05-01'), ('2021-05-02')),
  27.     PARTITION p20210502 VALUES [('2021-05-02'), ('2021-05-03')),
  28.     PARTITION p20210503 VALUES [('2021-05-03'), ('2021-05-04'))
  29. )
复制代码
 建表时批量创建数字分区
当分区键为整数类型时,建表时通过 START、END 指定批量分区的开始值和结束值,EVERY 子句指定分区增量值。
说明:START、END 所指定的分区列的值须要利用英文引号包裹,而 EVERY 子句中的分区增量值不消英文引号包裹。
如下示例中,批量分区的开始值为 1 和结束值为 5,分区增量值为 1:
  1. CREATE TABLE test.site_access8(
  2.     datekey INT,
  3.     site_id INT,
  4.     city_code SMALLINT,
  5.     user_name VARCHAR(32),
  6.     pv BIGINT DEFAULT '0'
  7. )
  8. DUPLICATE KEY(datekey, site_id, city_code, user_name)
  9. PARTITION BY RANGE (datekey) (
  10.     START ("1") END ("5") EVERY (1)
  11. )
  12. DISTRIBUTED BY HASH(site_id)
  13. PROPERTIES (
  14.     "replication_num" = "1"
  15. );
  16. 则相当于在建表语句中使用如下 PARTITION BY 子句:
  17. PARTITION BY RANGE (datekey) (
  18.     PARTITION p1 VALUES [("1"), ("2")),
  19.     PARTITION p2 VALUES [("2"), ("3")),
  20.     PARTITION p3 VALUES [("3"), ("4")),
  21.     PARTITION p4 VALUES [("4"), ("5"))
  22. )
复制代码
 建表后批量创建分区
建表后,支持通过ALTER TABLE 语句批量创建分区。相干语法与建表时批量创建分区类似,通过指定 ADD PARTITIONS 关键字,以及 START、END 以及 EVERY 子句来批量创建分区。示比方下:
ALTER TABLE test.site_access8
ADD PARTITIONS START (“5”) END (“9”) EVERY (2);
2.3.2.6 动态分区

建表时配置动态分区属性,StarRocks 会⾃动提前创建新的分区,删除过期分区,从而确保数据的时效性,实现对分区的⽣命周期管理(Time to Life,简称 “TTL”)。
区别于表达式分区中自动创建分区功能,动态创建分区只是根据配置的动态分区属性,定期提前创建一些分区。如果导入的新数据不属于这些提前创建的分区,则导入任务会报错。而表达式分区中自动创建分区功能会根据导入数据创建对应的新分区。
如下示例,创建一张支持动态分区的表,表名为 site_access,动态分区通过 PROPERTIES 进行配置。分区的区间为当前时间的前后 3 天,总共 6 天。手动创建的4个分区p20200321~p20200324,由于过期会被删除。
注意:starrocks 的EMR Serverless StarRocks版本默认 dynamic_partition_enable 为true,以是不须要再手动设置。
  1. CREATE TABLE test.site_access_dynamic(
  2.     event_day DATE,
  3.     site_id INT DEFAULT '10',
  4.     city_code VARCHAR(100),
  5.     user_name VARCHAR(32) DEFAULT '',
  6.     pv BIGINT DEFAULT '0'
  7. )
  8. DUPLICATE KEY(event_day, site_id, city_code, user_name)
  9. PARTITION BY RANGE(event_day)(
  10. PARTITION p20200321 VALUES LESS THAN ("2020-03-22"),
  11. PARTITION p20200322 VALUES LESS THAN ("2020-03-23"),
  12. PARTITION p20200323 VALUES LESS THAN ("2020-03-24"),
  13. PARTITION p20200324 VALUES LESS THAN ("2020-03-25")
  14. )
  15. DISTRIBUTED BY HASH(event_day, site_id)
  16. PROPERTIES(
  17.     "dynamic_partition.time_unit" = "DAY",
  18.     "dynamic_partition.start" = "-3",
  19.     "dynamic_partition.end" = "3",
  20.     "dynamic_partition.prefix" = "p",
  21.     "dynamic_partition.history_partition_num" = "3",
  22.      "replication_num" = "1"
  23. );
复制代码

动态分区相干属性 PROPERTIES:


动态分区相干 FE 配置项:
dynamic_partition_check_interval_seconds:FE 配置项,动态分区检查的时间周期,默以为 600,单元为 s,即每10分钟检查一次分区情况是否满足PROPERTIES中动态分区属性,如不满足,则会自动创建和删除分区。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表