本文将介绍如何创建Fluss表。
创建主键表
CREATE TABLE `my-catalog`.`my_db`.`my_pk_table` (
shop_id BIGINT,
user_id BIGINT,
num_orders INT,
total_amount INT,
PRIMARY KEY (shop_id, user_id) NOT ENFORCED
) WITH (
'bucket.num' = '4'
);
创建日志表
CREATE TABLE `my-catalog`.`my_db`.`my_log_table` (
order_id BIGINT,
item_id BIGINT,
amount INT,
address STRING
) WITH (
'bucket.num' = '8'
);
创建分区表
目前 Fluss 的分区键只支持 String 类型。
对于分区主键表,其分区键(下面例子中的 dt 字段)必须是主键的子集。
分区主键表
分区键为 dt,主键为 [dt, shot_id, user_id]。
CREATE TABLE `my-catalog`.`my_db`.`my_part_pk_table` (
dt STRING,
shop_id BIGINT,
user_id BIGINT,
num_orders INT,
total_amount INT,
PRIMARY KEY (dt, shop_id, user_id) NOT ENFORCED
) PARTITIONED BY (dt) WITH (
'bucket.num' = '4'
);
分区日志表
创建了一张分区日志表,其分区键为 dt。
CREATE TABLE `my-catalog`.`my_db`.`my_part_log_table` (
dt STRING,
shop_id BIGINT,
user_id BIGINT,
num_orders INT,
total_amount INT
) PARTITIONED BY (dt) WITH (
'bucket.num' = '4'
);
新建分区
ALTER TABLE my-catalog.my_db.my_part_pk_table
ADD PARTITION (dt = '2025-03-05');
创建自动分区表
自动分区表在分区表的基础上,加入了自动分区的逻辑,Fluss 会根据你配置的自动分区策略为你提前创建好分区。
自动分区主键表
分区键为 dt,自动分区创建间隔为天(day)。
CREATE TABLE `my-catalog`.`my_db`.`my_auto_part_pk_table` (
dt STRING,
shop_id BIGINT,
user_id BIGINT,
num_orders INT,
total_amount INT,
PRIMARY KEY (dt, shop_id, user_id) NOT ENFORCED
) PARTITIONED BY (dt) WITH (
'bucket.num' = '4'
'table.auto-partition.enabled' = 'true',
'table.auto-partition.time-unit' = 'day'
);
自动分区日志表
分区键为 dt,自动分区创建间隔为天(day)。
CREATE TABLE `my-catalog`.`my_db`.`my_auto_part_log_table` (
dt STRING,
shop_id BIGINT,
user_id BIGINT,
num_orders INT,
total_amount INT
) PARTITIONED BY (dt) WITH (
'bucket.num' = '4'
'table.auto-partition.enabled' = 'true',
'table.auto-partition.time-unit' = 'day'
);
复制表(Schema 复制)
Fluss 支持通过 'create table like' 语法创建一张 schema,分区信息和表参数相同的表。
-- 有一张 datagen 的临时表
CREATE TEMPORARY TABLE datagen (
user_id BIGINT,
item_id BIGINT,
behavior STRING,
dt STRING,
hh STRING
) WITH (
'connector' = 'datagen',
'rows-per-second' = '10'
);
-- 创建一张去掉 like option 的 Fluss 表
CREATE TABLE my-catalog.my_db.my_like_db LIKE datagen (EXCLUDING OPTIONS);
删除表
DROP TABLE `my-catalog`.`my_db`.`my_db`;
该文章对您有帮助吗?