doris:临时分区

Doris 支持在分区表中添加临时分区。临时分区与正式分区不同,临时分区不会被常规查询检索到,只有通过特殊查询语句才能查询。

  • 临时分区的分区列与正式分区相同且不可修改。

  • 所有临时分区之间的分区范围不可重叠,但临时分区与正式分区的范围可以重叠。

  • 临时分区的名称不能与正式分区或其他临时分区重复。

临时分区的主要应用场景:

  • 原子覆盖写操作:用户希望重写某一分区的数据,但不希望在删除旧数据和导入新数据之间有数据缺失。此时,可以创建一个临时分区,将新数据导入临时分区后,通过替换操作原子性地替换原有分区。对于非分区表的原子覆盖写操作,请参阅替换表文档。

  • 修改分桶数:用户在创建分区时使用了不合适的分桶数,可以创建一个新的临时分区并指定新的分桶数,然后通过 INSERT INTO 命令将正式分区的数据导入临时分区,再通过替换操作原子性地替换原有分区。

  • 合并或分割分区:用户希望修改分区范围,如合并两个分区或将一个大分区分割成多个小分区。可以先建立新的临时分区,然后通过 INSERT INTO 命令将正式分区的数据导入临时分区,再通过替换操作原子性地替换原有分区。

添加临时分区​

使用 ALTER TABLE ADD TEMPORARY PARTITION 语句添加临时分区:

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")
("replication_num" = "1")
DISTRIBUTED BY HASH(k1) BUCKETS 5;ALTER TABLE tbl3 ADD TEMPORARY PARTITION tp1 VALUES IN ("Beijing", "Shanghai");ALTER TABLE tbl4 ADD TEMPORARY PARTITION tp1 VALUES IN ((1, "Beijing"), (1, "Shanghai"));ALTER TABLE tbl3 ADD TEMPORARY PARTITION tp1 VALUES IN ("Beijing", "Shanghai")
("replication_num" = "1")
DISTRIBUTED BY HASH(k1) BUCKETS 5;

删除临时分区​

使用 ALTER TABLE DROP TEMPORARY PARTITION 语句删除临时分区:

ALTER TABLE tbl1 DROP TEMPORARY PARTITION tp1;

替换正式分区​

使用 ALTER TABLE REPLACE PARTITION 语句将正式分区替换为临时分区:

ALTER TABLE tbl1 REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1, tp2, tp3);ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1, tp2)
PROPERTIES ("strict_range" = "false","use_temp_partition_name" = "true"
);

替换操作有两个特殊的可选参数:

1. strict_range

默认为 true。

对于 Range 分区,当该参数为 true 时,所有被替换的正式分区的范围并集需要与替换的临时分区的范围并集完全相同。当置为 false 时,只需保证替换后新的正式分区间的范围不重叠即可。

对于 List 分区,该参数恒为 true。所有被替换的正式分区的枚举值必须与替换的临时分区枚举值完全相同。

示例 1

-- 待替换的分区 p1, p2, p3 的范围 (=> 并集):
[10, 20), [20, 30), [40, 50) => [10, 30), [40, 50)-- 替换分区 tp1, tp2 的范围(=> 并集):
[10, 30), [40, 45), [45, 50) => [10, 30), [40, 50)--范围并集相同,则可以使用 tp1 和 tp2 替换 p1, p2, p3。

示例 2

-- 待替换的分区 p1 的范围 (=> 并集):
[10, 50) => [10, 50)-- 替换分区 tp1, tp2 的范围(=> 并集):
[10, 30), [40, 50) => [10, 30), [40, 50)-- 范围并集不相同,如果 strict_range 为 true,则不可以使用 tp1 和 tp2 替换 p1。如果为 false,且替换后的两个分区范围 [10, 30), [40, 50) 和其他正式分区不重叠,则可以替换。

示例 3

-- 待替换的分区 p1, p2 的枚举值(=> 并集):
(1, 2, 3), (4, 5, 6) => (1, 2, 3, 4, 5, 6)-- 替换分区 tp1, tp2, tp3 的枚举值(=> 并集):
(1, 2, 3), (4), (5, 6) => (1, 2, 3, 4, 5, 6)-- 枚举值并集相同,可以使用 tp1,tp2,tp3 替换 p1,p2

示例 4

-- 待替换的分区 p1, p2,p3 的枚举值(=> 并集):
(("1","beijing"), ("1", "shanghai")), (("2","beijing"), ("2", "shanghai")), (("3","beijing"), ("3", "shanghai")) => (("1","beijing"), ("1", "shanghai"), ("2","beijing"), ("2", "shanghai"), ("3","beijing"), ("3", "shanghai"))-- 替换分区 tp1, tp2 的枚举值(=> 并集):
(("1","beijing"), ("1", "shanghai")), (("2","beijing"), ("2", "shanghai"), ("3","beijing"), ("3", "shanghai")) => (("1","beijing"), ("1", "shanghai"), ("2","beijing"), ("2", "shanghai"), ("3","beijing"), ("3", "shanghai"))-- 枚举值并集相同,可以使用 tp1,tp2 替换 p1,p2,p3

2. use_temp_partition_name

默认为 false。

当该参数为 false,并且待替换的分区和替换分区的个数相同时,替换后的正式分区名称维持不变。

如果为 true,替换后正式分区的名称为替换分区的名称。示例如下:

示例 1

ALTER TABLE tbl1 REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);

  • use_temp_partition_name 默认为 false,则在替换后,分区的名称依然为 p1,但相关的数据和属性都替换为 tp1 的。
  • 如果 use_temp_partition_name 为 true,则在替换后,分区的名称为 tp1,p1 分区不再存在。

示例 2

ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1);

  • use_temp_partition_name 默认为 false,但因待替换分区的个数与替换分区的个数不同,该参数无效。替换后,分区名称为 tp1,p1 和 p2 不再存在。

提示

替换操作说明:

分区替换成功后,被替换的分区将被删除且不可恢复。

导入临时分区​

根据导入方式的不同,指定导入临时分区的语法稍有差别。示例如下:

INSERT INTO tbl TEMPORARY PARTITION(tp1, tp2, ...) SELECT ....
curl --location-trusted -u root: -H "label:123" -H "temporary_partitions: tp1, tp2, ..." -T testData http://host:port/api/testDb/testTbl/_stream_load    
LOAD LABEL example_db.label1
(
DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
INTO TABLE my_table
TEMPORARY PARTITION (tp1, tp2, ...)
...
)
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
CREATE ROUTINE LOAD example_db.test1 ON example_tbl
COLUMNS(k1, k2, k3, v1, v2, v3 = k1 * 100),
TEMPORARY PARTITIONS(tp1, tp2, ...),
WHERE k1 > 100
PROPERTIES
(...)
FROM KAFKA
(...);

查询临时分区​

SELECT ... FROM
tbl1 TEMPORARY PARTITION(tp1, tp2, ...)
JOIN
tbl2 TEMPORARY PARTITION(tp1, tp2, ...)
ON ...
WHERE ...;

与其他操作的关系​

DROP

  • 使用 Drop 操作直接删除数据库或表后,可以通过 Recover 命令恢复数据库或表(限定时间内),但临时分区不会被恢复。

  • 使用 Alter 命令删除正式分区后,可以通过 Recover 命令恢复分区(限定时间内)。操作正式分区和临时分区无关。

  • 使用 Alter 命令删除临时分区后,无法通过 Recover 命令恢复临时分区。

TRUNCATE

  • 使用 Truncate 命令清空表,表的临时分区会被删除,且不可恢复。

  • 使用 Truncate 命令清空正式分区时,不影响临时分区。

  • 不可使用 Truncate 命令清空临时分区。

ALTER

  • 当表存在临时分区时,无法使用 Alter 命令对表进行 Schema Change、Rollup 等变更操作。

  • 当表在进行变更操作时,无法对表添加临时分区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13030.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果再度砍掉AR眼镜项目?AR真的是伪风口吗?

曾经,AR游戏一度异常火热,宝可梦go让多少人不惜翻墙都要去玩,但是也没过去几年,苹果被曝出再度砍掉了AR眼镜项目,面对着市场的变化,让人不禁想问AR真的是伪风口吗? 一、苹果再度砍掉AR眼镜项目&…

《redis4.0 通信模块源码分析(一)》

【redis导读】redis作为一款高性能的内存数据库,面试服务端开发,redis是绕不开的话题,如果想提升自己的网络编程的水平和技巧,redis这款优秀的开源软件是很值得大家去分析和研究的。 笔者从大学毕业一直有分析redis源码的想法&…

日期选择控件,时间跨度最大一年。

<el-date-picker v-model"times" type"daterange" unlink-panels :picker-options"pickerOptions" :range-separator"$lang(至)":start-placeholder"$lang(开始)" :end-placeholder"$lang(结束)" :default-tim…

JDK9新特性

文章目录 新特性&#xff1a;1.模块化系统使用模块化module-info.java&#xff1a;exports&#xff1a;opens&#xff1a;requires&#xff1a;provides&#xff1a;uses&#xff1a; 2.JShell启动Jshell执行计算定义变量定义方法定义类帮助命令查看定义的变量&#xff1a;/var…

Vue Router 客户端路由解决方案:axios 响应拦截(跳转到登录页面)

文章目录 引言客户端路由 vs. 服务端路由简单的路由案例术语I Vue Router 提供的组件RouterLinkRouterViewII 创建路由器实例调用 createRouter() 函数创建路由选项III 注册路由器插件通过调用 use() 来完成注册路由器插件的职责对于组合式 API,Vue Router 给我们提供了一些组…

在游戏本(6G显存)上本地部署Deepseek,运行一个14B大语言模型,并使用API访问

在游戏本6G显存上本地部署Deepseek&#xff0c;运行一个14B大语言模型&#xff0c;并使用API访问 环境说明环境准备下载lmstudio运行lmstudio 下载模型从huggingface.co下载模型 配置模型加载模型测试模型API启动API服务代码测试 deepseek在大语言模型上的进步确实不错&#xf…

【Uniapp-Vue3】创建DB schema数据表结构

右键uniCloud文件下的database文件&#xff0c;点击“新建DB schema”&#xff0c;选择模板&#xff0c;修改文件名&#xff0c;点击“创建” 创建完成后会出现对应的文件&#xff0c;进入该文件进行配置 对文件中的必填选项&#xff0c;用户权限&#xff0c;字段进行配置 其…

1-ET框架开发环境与demo运行

所需开发环境 安装Unity模块时&#xff0c;记得安装windows Build Support&#xff08;IL2CPP&#xff09;&#xff0c;否则打包会出问题。 安装visual studio&#xff0c;因为需要安装开发组件&#xff0c;需要选择 下载MongoDB7.0.2并安装 确认MongoDB安装成功 查看计算机…

CTP查询资金费率和手续费没响应

CTP的OnRspQryInstrumentOrderCommRate()和OnRspQryInstrumentCommissionRate()和手续费率和手续费有关系&#xff0c;但是今天我通过重写这两个方法&#xff0c;并且调用ReqQryInstrumentCommissionRate()后没响应&#xff0c;查了半天发现&#xff0c;我应该把响应函数实现写…

Python爬虫实战:一键采集电商数据,掌握市场动态!

电商数据分析是个香饽饽&#xff0c;可市面上的数据采集工具要不贵得吓人&#xff0c;要不就是各种广告弹窗。干脆自己动手写个爬虫&#xff0c;想抓啥抓啥&#xff0c;还能学点技术。今天咱聊聊怎么用Python写个简单的电商数据爬虫。 打好基础&#xff1a;搞定请求头 别看爬虫…

Page Assist实现deepseek离线部署的在线搜索功能

前面文章Mac 基于Ollama 本地部署DeepSeek离线模型 实现了deepseek的离线部署&#xff0c;但是部署完成虽然可以进行问答和交互&#xff0c;也有thinking过程&#xff0c;但是没办法像官方一样进行联网搜索。今天我们介绍一款浏览器插件Page Assist来实现联网搜索&#xff0c;完…

Qt跨屏窗口的一个Bug及解决方案

如果我们希望一个窗口覆盖用户的整个桌面&#xff0c;此时就要考虑用户有多个屏幕的场景&#xff08;此窗口要横跨多个屏幕&#xff09;&#xff0c;由于每个屏幕的分辨率和缩放比例可能是不同的&#xff0c;Qt底层在为此窗口设置缩放比例&#xff08;DevicePixelRatio&#xf…

AI绘画:解锁商业设计新宇宙(6/10)

1.AI 绘画&#xff1a;商业领域的潜力新星 近年来&#xff0c;AI 绘画技术以惊人的速度发展&#xff0c;从最初简单的图像生成&#xff0c;逐渐演变为能够创造出高度逼真、富有创意的艺术作品。随着深度学习算法的不断优化&#xff0c;AI 绘画工具如 Midjourney、Stable Diffu…

逻辑回归原理

逻辑回归是一个分类算法&#xff0c;它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字&#xff0c;却不是一个回归算法。 逻辑回归尤其是二元逻辑回归是非常常见的模型&#xff0c;训练速度很快&#xff0c;虽然使用起来没有支持向量机&#xff08;SVM&#xf…

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

四.4 Redis 五大数据类型/结构的详细说明/详细使用&#xff08; zset 有序集合数据类型详解和使用&#xff09; 文章目录 四.4 Redis 五大数据类型/结构的详细说明/详细使用&#xff08; zset 有序集合数据类型详解和使用&#xff09;1. 有序集合 Zset(sorted set)2. zset 有序…

AlwaysOn 可用性组副本所在服务器以及该副本上数据库的各项状态信息

目录标题 语句代码解释:1. `sys.dm_hadr_database_replica_states` 视图字段详细解释及官网链接官网链接字段解释2. `sys.availability_replicas` 视图字段详细解释及官网链接官网链接字段解释查看视图的创建语句方法一:使用 SQL Server Management Studio (SSMS)方法二:使用…

编程之路:在细节中磨砺技艺

编程之路&#xff1a;在细节中磨砺技艺 在编程的世界里&#xff0c;每一个字符、每一行代码都像是精心雕琢的艺术品&#xff0c;承载着程序员的智慧与心血。而在这个充满挑战与惊喜的旅程中&#xff0c;问题与解决方案总是如影随形。就像在开发居家养老管理系统时&#xff0c;我…

基于ArcGIS的SWAT模型+CENTURY模型模拟流域生态系统水-碳-氮耦合过程研究

流域是一个相对独立的自然地理单元&#xff0c;它是以水系为纽带&#xff0c;将系统内各自然地理要素连结成一个不可分割的整体。碳和氮是陆地生态系统中最重要的两种化学元素&#xff0c;而在流域系统内&#xff0c;水-碳-氮是相互联动、不可分割的耦合体。随着流域内人类活动…

【Linux网络编程】:URL(encode),HTTP协议,telnet工具

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://mp.csdn…

6 [新一代Github投毒针对网络安全人员钓鱼]

0x01 前言 在Github上APT组织“海莲花”发布存在后门的提权BOF&#xff0c;通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究&#xff0c;所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓…