马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、建表
在 Paimon Catalog中创建的表就是Paimon的管理表,由Catalog管理。当表从Catalog中删除时,其表文件也将被删除,雷同于Hive的内部表。
1)创建表
- CREATE TABLE test (
- user_id BIGINT,
- item_id BIGINT,
- behavior STRING,
- dt STRING,
- hh STRING,
- PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
- );
复制代码 2)创建分区表
- CREATE TABLE test_p (
- user_id BIGINT,
- item_id BIGINT,
- behavior STRING,
- dt STRING,
- hh STRING,
- PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
- ) PARTITIONED BY (dt, hh);
复制代码 通过设置partition.expiration-time,可以自动删除逾期的分区。
如果定义了主键,则分区字段必须是主键的子集。
可以定义以下三类字段为分区字段:
- 创建时间(保举):创建时间通常是不可变的,因此您可以放心地将其视为分区字段并将其添加到主键中。
- 事件时间:事件时间是原表中的一个字段。对于CDC数据来说,比如从MySQL CDC同步的表或者Paimon生成的Changelogs,它们都是完整的CDC数据,包括UPDATE_BEFORE记录,即使你声明了包罗分区字段的主键,也能达到独特的效果。
- CDC op_ts:不能定义为分区字段,无法知道之前的记录时间戳。
3)Create Table As
表可以通过查询的效果创建和填充,例如,我们有一个如许的sql: CREATE TABLE table_b AS SELECT id, name FORM table_a, 生成的表table_b将相当于创建表并插入数据以下语句:CREATE TABLE table_b(id INT, name STRING); INSERT INTO table_b SELECT id, name FROM table_a;利用CREATE TABLE AS SELECT时我们可以指定主键或分区。
- CREATE TABLE test1(
- user_id BIGINT,
- item_id BIGINT
- );
- CREATE TABLE test2 AS SELECT * FROM test1;
- -- 指定分区
- CREATE TABLE test2_p WITH ('partition' = 'dt') AS SELECT * FROM test_p;
-
- -- 指定配置
- CREATE TABLE test3(
- user_id BIGINT,
- item_id BIGINT
- ) WITH ('file.format' = 'orc');
- CREATE TABLE test3_op WITH ('file.format' = 'parquet') AS SELECT * FROM test3;
- -- 指定主键
- CREATE TABLE test_pk WITH ('primary-key' = 'dt,hh') AS SELECT * FROM test;
- -- 指定主键和分区
- CREATE TABLE test_all WITH ('primary-key' = 'dt,hh', 'partition' = 'dt') AS SELECT * FROM test_p;
复制代码 4)Create Table Like
创建与另一个表具有雷同schema、分区和表属性的表。
- CREATE TABLE test_ctl LIKE test;
复制代码 5)表属性
用户可以指定表属性来启用Paimon的功能或提高Paimon的性能。有关此类属性的完整列表,请参阅设置: Configurations | Apache Paimon。
- CREATE TABLE tbl(
- user_id BIGINT,
- item_id BIGINT,
- behavior STRING,
- dt STRING,
- hh STRING,
- PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
- ) PARTITIONED BY (dt, hh)
- WITH (
- 'bucket' = '2',
- 'bucket-key' = 'user_id'
- );
复制代码 6)外部表
外部表由Catalog记录但不管理。如果删除外部表,其表文件不会被删除,雷同于Hive的外部表。
Paimon 外部表可以在任何Catalog中利用。如果您不想创建Paimon Catalog而只想读/写表,则可以考虑外部表。
- CREATE TABLE ex (
- user_id BIGINT,
- item_id BIGINT,
- behavior STRING,
- dt STRING,
- hh STRING,
- PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
- ) WITH (
- 'connector' = 'paimon',
- 'path' = 'hdfs://hadoop102:8020/paimon/external/ex',
- 'auto-create' = 'true'
- );
复制代码 2 、修改表
1)更改/添加表属性
- ALTER TABLE test SET (
- 'write-buffer-size' = '256 MB'
- );
复制代码 2)重定名表名称
- ALTER TABLE test1 RENAME TO test_new;
复制代码 3)删除表属性
- ALTER TABLE test RESET ('write-buffer-size');
复制代码 2.3.2.2 修改列
1)添加新列
- ALTER TABLE test ADD (c1 INT, c2 STRING);
复制代码 2)重定名列名称
- ALTER TABLE test RENAME c1 TO c0;
复制代码 3)删除列
- ALTER TABLE test DROP (c0, c2);
复制代码 4)更改列的可为空性
- CREATE TABLE test_null(
- id INT PRIMARY KEY NOT ENFORCED,
- coupon_info FLOAT NOT NULL
- );
- -- 列coupon_info修改成允许为null
- ALTER TABLE test_null MODIFY coupon_info FLOAT;
- -- 列coupon_info修改成不允许为null
- -- 如果表中已经有null值, 修改之前先设置如下参数删除null值
- SET 'table.exec.sink.not-null-enforcer' = 'DROP';
- ALTER TABLE test_null MODIFY coupon_info FLOAT NOT NULL;
复制代码 5)更改列解释
- ALTER TABLE test MODIFY user_id BIGINT COMMENT 'user id';
复制代码 6)添加列位置
- ALTER TABLE test ADD a INT FIRST;
- ALTER TABLE test ADD b INT AFTER a;
复制代码 7)更改列位置
- ALTER TABLE test MODIFY b INT FIRST;
- ALTER TABLE test MODIFY a INT AFTER user_id;
复制代码 8)更改列类型
- ALTER TABLE test MODIFY a DOUBLE;
复制代码 2.3.2.3 修改水印
1)添加水印
- CREATE TABLE test_wm (
- id INT,
- name STRING,
- ts BIGINT
- );
- ALTER TABLE test_wm ADD(
- et AS to_timestamp_ltz(ts,3),
- WATERMARK FOR et AS et - INTERVAL '1' SECOND
- );
复制代码 2)更改水印
- ALTER TABLE test_wm MODIFY WATERMARK FOR et AS et - INTERVAL '2' SECOND;
复制代码 3)去掉水印
- ALTER TABLE test_wm DROP WATERMARK;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |