1.改變或增加表屬性
設(shè)置表屬性 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引擎
最簡(jiǎn)單的sql調(diào)用是
ALTER TABLE my_table RENAME TO my_table_new;
可以以這種方式重命名paimon表
ALTER TABLE [catalog.[database.]]test1 RENAME to [database.]test2;
不能將Catalog名稱(chēng)放在重命名的表之前,會(huì)報(bào)錯(cuò):
ALTER TABLE catalog.database.test1 RENAME to catalog.database.test2;
注意:如果使用對(duì)象存儲(chǔ),如S3或OSS,請(qǐng)謹(jǐn)慎使用此語(yǔ)法,因?yàn)閷?duì)象存儲(chǔ)的重命名不是原子的,如果發(fā)生故障,只能移動(dòng)失敗的文件。
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.刪除分區(qū)
Flink引擎
對(duì)于flink sql,可以指定分區(qū)列的部分列,也可以同時(shí)指定多個(gè)分區(qū)值。
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引擎
對(duì)于spark sql,需要指定所有分區(qū)列。
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 nullable
ALTER 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.更改現(xiàn)有列的位置
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.修改列的類(lèi)型
Flink引擎
ALTER TABLE my_table MODIFY col_a DOUBLE;
Spark3引擎
ALTER TABLE my_table ALTER COLUMN col_a TYPE DOUBLE;
支持的類(lèi)型轉(zhuǎn)換文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-838827.html
https://paimon.apache.org/docs/0.7/how-to/altering-tables/
12.添加watermark
從現(xiàn)有列log_ts
添加一個(gè)計(jì)算列ts
,并在列ts
上添加一個(gè)帶有策略ts - INTERVAL '1' HOUR
的watermark,該列ts被標(biāo)記為表my_table
的事件時(shí)間屬性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-838827.html
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
到了這里,關(guān)于Apache Paimon使用之 Altering Tables的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!