行业知识
Apache Paimon使用之 Altering Tables
2026-11-11 07:58:43
来源:互联网转载
1.改变或增加表属性
��置表属性 write-buffer-size 为256 MB。
()Flink 引擎
ALTER TABLE my_table SET ( 'write-buffer-size' = '256 MB');
Spark3引擎
()ALTER TABLE my_table SET TBLPROPERTIES ( 'write-buffer-size' = '256 MB');
2.重命名表
Flink引擎
ALTER TABLE my_table RENAME TO my_table_new;
Spark3引擎
最简单的sql调用是
ALTER TABLE my_table RENAME TO my_table_new;
可以以这种方式重命名paimon表
ALTER TABLE [catalog.[database.]]test1 RENAME to [database.]test2;
不能将Catalog名称放在重命名的表之前,会报错:
ALTER TABLE catalog.database.test1 RENAME to catalog.database.test2;
注意:如果使用对象存储,如S3或OSS,请谨慎使用此语法,因为对象存储的重命名不是原子的,如果发生故障,只能移动失败的文件。
3.删除表属性
Flink引擎
ALTER TABLE my_table RESET ('write-buffer-size'); Spark3引擎
ALTER TABLE my_table UNSET TBLPROPERTIES ('write-buffer-size'); 3.添加新列
Flink引擎
ALTER TABLE my_table ADD (c1 INT, c2 STRING);
Spark3引擎
ALTER TABLE my_table ADD COLUMNS ( c1 INT, c2 STRING);
4.重命名列名
Flink引擎
ALTER TABLE my_table RENAME c0 TO c1;
Spark3引擎
ALTER TABLE my_table RENAME COLUMN c0 TO c1;
5.删除列
注意:如果在hive catalog中使用,需要在hive server中禁用hive.metastore.disallow.incompatible.col.type.changes。
Flink引擎
ALTER TABLE my_table DROP (c1, c2);
Spark3引擎
ALTER TABLE my_table DROP COLUMNS (c1, c2);
6.删除分区
Flink引擎
对于flink sql,可以指定分区列的部分列,也可以同时指定多个分区值。
ALTER TABLE MyTable DROP PARTITION (`id` = 1);ALTER TABLE MyTable DROP PARTITION (`id` = 1, `name` = 'paimon');ALTER TABLE MyTable DROP PARTITION (`id` = 1), PARTITION (`id` = 2);
Spark3引擎
对于spark sql,需要指定所有分区列。
ALTER TABLE MyTable DROP PARTITION (`id` = 1, `name` = 'paimon');
7.更改列是否允许为Null
Flink引擎
CREATE TABLE my_table (id INT PRIMARY KEY NOT ENFORCED, coupon_info FLOAT NOT NULL);-- Change column `coupon_info` from NOT NULL to nullableALTER TABLE my_table MODIFY coupon_info FLOAT;-- Change column `coupon_info` from nullable to NOT NULL-- If there are NULL values already, set table option as below to drop those records silently before altering table.SET 'table.exec.sink.not-null-enforcer' = 'DROP';ALTER TABLE my_table MODIFY coupon_info FLOAT NOT NULL;
Spark3引擎
ALTER TABLE my_table ALTER COLUMN coupon_info DROP NOT NULL;
注意:将可Null列更改为NOT NULL目前仅Flink引擎支持。
8.更改列注释
Flink引擎
ALTER TABLE my_table MODIFY buy_count BIGINT COMMENT 'buy count';
Spark3引擎
ALTER TABLE my_table ALTER COLUMN buy_count COMMENT 'buy count';
9.在指定位置添加列
Flink引擎
ALTER TABLE my_table ADD c INT FIRST;ALTER TABLE my_table ADD c INT AFTER b;
Spark3引擎
ALTER TABLE my_table ADD COLUMN c INT FIRST;ALTER TABLE my_table ADD COLUMN c INT AFTER b;
10.更改现有列的位置
Flink引擎
ALTER TABLE my_table MODIFY col_a DOUBLE FIRST;ALTER TABLE my_table MODIFY col_a DOUBLE AFTER col_b;
Spark3引擎
ALTER TABLE my_table ALTER COLUMN col_a FIRST;ALTER TABLE my_table ALTER COLUMN col_a AFTER col_b;
11.修改列的类型
Flink引擎
ALTER TABLE my_table MODIFY col_a DOUBLE;
Spark3引擎
ALTER TABLE my_table ALTER COLUMN col_a TYPE DOUBLE;
支持的类型转换
https://paimon.apache.org/docs/0.7/how-to/altering-tables/
12.添加watermark
从现有列log_ts添加一个计算列ts,并在列ts上添加一个带有策略ts - INTERVAL '1' HOUR的watermark,该列ts被标记为表my_table的事件时间属性。
ALTER TABLE my_table ADD ( ts AS TO_TIMESTAMP(log_ts) AFTER log_ts, WATERMARK FOR ts AS ts - INTERVAL '1' HOUR);
13.删除watermark
ALTER TABLE my_table DROP WATERMARK;
14.修改watermark策略
ALTER TABLE my_table MODIFY WATERMARK FOR ts AS ts - INTERVAL '2' HOUR
上一篇:服务器功能版怎么用的?