当前版本:2.1.4
生产场景:需要按天,平台字段进行幂等更新。
举例:当前有几个 job 需要同时更新同一张表。表设计如下
CREATE TABLE `dialog_eval_stat` (
`seller_nick` VARCHAR(65533) NULL,
`snick` VARCHAR(65533) NULL,
`day` INT NULL,
`platform` VARCHAR(65533) NULL,
`eval_code` INT NULL,
`eval_cnt` BIGINT NULL,
`dialog_cnt` BIGINT NULL
) ENGINE = OLAP DUPLICATE KEY(`seller_nick`, `snick`) AUTO PARTITION BY LIST (platform)(day) (
) DISTRIBUTED BY HASH(`seller_nick`, `snick`) BUCKETS AUTO PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"min_load_replica_num" = "-1",
"is_being_synced" = "false",
"storage_medium" = "hdd",
"storage_format" = "V2",
"inverted_index_storage_format" = "V1",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false",
"group_commit_interval_ms" = "10000",
"group_commit_data_bytes" = "134217728"
);
问题 1: 自动分区 和 动态分区 两个分区命名方式不一样
自动分区:p202407128 ,当增加字段如 tb 则变成 ptb2202407128(p + col1 + col1字符串长度 +col2 + col2字符串长度 )
动态分区:p20240712
使用体验比较割裂。
问题 2: TRUNCATE/INSERT OVERWRITE 不存在的分区会报错
TRUNCATE TABLE xqc_dws.dialog_eval_stat PARTITION(pks2202407168)
在使用体验中感觉不太便利,希望清空不存在的分区不会报错,或 if not exists
来不处理。
TRUNCATE TABLE xqc_dws.dialog_eval_stat PARTITION(pks2202407168) if not exists
问题 3: TRUNCATE/INSERT OVERWRITE 对分区处理时不太便利
能否合并动态分区/自动分区功能,统一管理分区。
其他:
问题描述:在修改分区时触发的一个bug,导致 BE 宕机,没有自动重启,此问题非稳定复现。