Apache Paimon使用之 Altering Tables

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 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.更改现有列的位置

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
相关推荐
智数研析社8 分钟前
9120 部 TMDb 高分电影数据集 | 7 列全维度指标 (评分 / 热度 / 剧情)+API 权威源 | 电影趋势分析 / 推荐系统 / NLP 建模用
大数据·人工智能·python·深度学习·数据分析·数据集·数据清洗
潘达斯奈基~22 分钟前
《大数据之路1》笔记2:数据模型
大数据·笔记
寻星探路35 分钟前
数据库造神计划第六天---增删改查(CRUD)(2)
java·大数据·数据库
智_永无止境2 小时前
Apache Commons Math3 使用指南:强大的Java数学库
apache·math
翰林小院2 小时前
【大数据专栏】流式处理框架-Apache Fink
大数据·flink
孟意昶3 小时前
Spark专题-第一部分:Spark 核心概述(2)-Spark 应用核心组件剖析
大数据·spark·big data
IT学长编程4 小时前
计算机毕业设计 基于Hadoop的健康饮食推荐系统的设计与实现 Java 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
java·大数据·hadoop·毕业设计·课程设计·推荐算法·毕业论文
AAA修煤气灶刘哥4 小时前
Kafka 入门不踩坑!从概念到搭环境,后端 er 看完就能用
大数据·后端·kafka
在未来等你7 小时前
Elasticsearch面试精讲 Day 18:内存管理与JVM调优
大数据·分布式·elasticsearch·搜索引擎·面试
智海观潮7 小时前
Spark SQL | 目前Spark社区最活跃的组件之一
大数据·spark