qidao123.com技术社区-IT企服评测·应用市场

标题: 【Apache Paimon】Paimon集成 Flink 引擎之DDL(二) [打印本页]

作者: 汕尾海湾    时间: 14 小时前
标题: 【Apache Paimon】Paimon集成 Flink 引擎之DDL(二)
1、建表

在 Paimon Catalog中创建的表就是Paimon的管理表,由Catalog管理。当表从Catalog中删除时,其表文件也将被删除,雷同于Hive的内部表。
1)创建表
  1. CREATE TABLE test (
  2.     user_id BIGINT,
  3.     item_id BIGINT,
  4.     behavior STRING,
  5.     dt STRING,
  6.     hh STRING,
  7.     PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
  8. );
复制代码
2)创建分区表
  1. CREATE TABLE test_p (
  2.     user_id BIGINT,
  3.     item_id BIGINT,
  4.     behavior STRING,
  5.     dt STRING,
  6.     hh STRING,
  7.     PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
  8. ) PARTITIONED BY (dt, hh);
复制代码
通过设置partition.expiration-time,可以自动删除逾期的分区。
如果定义了主键,则分区字段必须是主键的子集。
可以定义以下三类字段为分区字段:

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时我们可以指定主键或分区。
  1. CREATE TABLE test1(
  2.     user_id BIGINT,
  3.     item_id BIGINT
  4. );
  5. CREATE TABLE test2 AS SELECT * FROM test1;
  6. -- 指定分区
  7. CREATE TABLE test2_p WITH ('partition' = 'dt') AS SELECT * FROM test_p;
  8.    
  9. -- 指定配置
  10. CREATE TABLE test3(
  11.        user_id BIGINT,
  12.        item_id BIGINT
  13. ) WITH ('file.format' = 'orc');
  14. CREATE TABLE test3_op WITH ('file.format' = 'parquet') AS SELECT * FROM test3;
  15. -- 指定主键
  16. CREATE TABLE test_pk WITH ('primary-key' = 'dt,hh') AS SELECT * FROM test;
  17. -- 指定主键和分区
  18. CREATE TABLE test_all WITH ('primary-key' = 'dt,hh', 'partition' = 'dt') AS SELECT * FROM test_p;
复制代码
4)Create Table Like
创建与另一个表具有雷同schema、分区和表属性的表。
  1. CREATE TABLE test_ctl LIKE test;
复制代码
5)表属性
用户可以指定表属性来启用Paimon的功能或提高Paimon的性能。有关此类属性的完整列表,请参阅设置: Configurations | Apache Paimon。
  1. CREATE TABLE tbl(
  2.     user_id BIGINT,
  3.     item_id BIGINT,
  4.     behavior STRING,
  5.     dt STRING,
  6.     hh STRING,
  7.     PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
  8. ) PARTITIONED BY (dt, hh)
  9. WITH (
  10.     'bucket' = '2',
  11.     'bucket-key' = 'user_id'
  12. );
复制代码
6)外部表
外部表由Catalog记录但不管理。如果删除外部表,其表文件不会被删除,雷同于Hive的外部表。
Paimon 外部表可以在任何Catalog中利用。如果您不想创建Paimon Catalog而只想读/写表,则可以考虑外部表。
  1. CREATE TABLE ex (
  2.     user_id BIGINT,
  3.     item_id BIGINT,
  4.     behavior STRING,
  5.     dt STRING,
  6.     hh STRING,
  7.     PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
  8. ) WITH (
  9.     'connector' = 'paimon',
  10.     'path' = 'hdfs://hadoop102:8020/paimon/external/ex',
  11.     'auto-create' = 'true'
  12. );
复制代码
2 、修改表

1)更改/添加表属性
  1. ALTER TABLE test SET (
  2.     'write-buffer-size' = '256 MB'
  3. );
复制代码
2)重定名表名称
  1. ALTER TABLE test1 RENAME TO test_new;
复制代码
3)删除表属性
  1. ALTER TABLE test RESET ('write-buffer-size');
复制代码
2.3.2.2 修改列
1)添加新列
  1. ALTER TABLE test ADD (c1 INT, c2 STRING);
复制代码
2)重定名列名称
  1. ALTER TABLE test RENAME c1 TO c0;
复制代码
3)删除列
  1. ALTER TABLE test DROP (c0, c2);
复制代码
4)更改列的可为空性
  1. CREATE TABLE test_null(
  2. id INT PRIMARY KEY NOT ENFORCED,
  3. coupon_info FLOAT NOT NULL
  4. );
  5. -- 列coupon_info修改成允许为null
  6. ALTER TABLE test_null MODIFY coupon_info FLOAT;
  7. -- 列coupon_info修改成不允许为null
  8. -- 如果表中已经有null值, 修改之前先设置如下参数删除null值
  9. SET 'table.exec.sink.not-null-enforcer' = 'DROP';
  10. ALTER TABLE test_null MODIFY coupon_info FLOAT NOT NULL;
复制代码
5)更改列解释
  1. ALTER TABLE test MODIFY user_id BIGINT COMMENT 'user id';
复制代码
6)添加列位置
  1. ALTER TABLE test ADD a INT FIRST;
  2. ALTER TABLE test ADD b INT AFTER a;
复制代码
7)更改列位置
  1. ALTER TABLE test MODIFY b INT FIRST;
  2. ALTER TABLE test MODIFY a INT AFTER user_id;
复制代码
8)更改列类型
  1. ALTER TABLE test MODIFY a DOUBLE;
复制代码
2.3.2.3 修改水印
1)添加水印
  1. CREATE TABLE test_wm (
  2.     id INT,
  3.     name STRING,
  4.     ts BIGINT
  5. );
  6. ALTER TABLE test_wm ADD(
  7.     et AS to_timestamp_ltz(ts,3),
  8.     WATERMARK FOR et AS et - INTERVAL '1' SECOND
  9. );
复制代码
2)更改水印
  1. ALTER TABLE test_wm MODIFY WATERMARK FOR et AS et - INTERVAL '2' SECOND;
复制代码
3)去掉水印
  1. ALTER TABLE test_wm DROP WATERMARK;
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4