配置 Fluss Catalog 后,可在实时计算开发控制台直接读取 Fluss 元数据,无需手动注册 Fluss 表,提高作业开发效率并保证数据的正确性。本文介绍如何创建、查看、使用及删除 Fluss Catalog。
前提条件
-
已创建 Fluss 集群,具体操作请参见创建 Fluss 集群。
-
Fluss 集群与 Flink 工作空间位于同一地域且网络互通(位于同一 VPC 或已配置网络连通)。
使用限制
-
不支持修改 Catalog。如需修改,需先删除已创建的 Catalog 再重新创建。
-
密码方式创建的 Catalog 使用管理员身份连接 Fluss 集群,所有使用该 Catalog 的作业均以管理员权限访问数据,无法按用户隔离数据访问权限。
-
免密方式创建的 Catalog 根据当前操作用户身份自动进行权限认证,不同用户使用同一个 Catalog 时,只能访问其在 Fluss 上被授权的数据。
创建 Fluss Catalog
根据 Fluss 集群版本的不同,创建 Catalog 的方式有所差异:
-
Fluss 集群版本低于 0.9-ali-5.0:仅支持密码方式创建 Catalog,需要使用管理员用户名和密码。
-
Fluss 集群版本为 0.9-ali-5.0 及以上:推荐使用免密方式创建 Catalog,无需输入用户名和密码,系统会根据当前操作用户身份自动完成权限认证。密码方式仍可用,但不推荐。
Catalog 创建完成后,配置信息不支持修改。如需修改,需删除已创建的 Catalog 再重新创建。
免密方式
适用于 Fluss 集群版本为 0.9-ali-5.0 及以上。
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击。
在创建 Catalog对话框中,选择内置 Catalog页签,在 Catalog 类型列表中选择 Fluss,然后单击下一步。
-
填写参数配置信息。
配置项
说明
是否必填
备注
name
Fluss Catalog 名称。
是
请填写为自定义英文名。
cluster
Fluss 集群名称。
是
从下拉列表中选择已创建的 Fluss 集群。系统自动配置连接地址和认证信息,无需手动填写用户名和密码。
-
单击确定。创建完成后,元数据下即可查看新建的 Catalog。
免密方式创建的 Catalog 在 Flink 作业运行时,系统会根据当前操作用户身份自动完成 Fluss 集群的权限认证。不同用户使用同一个 Catalog 时,只能访问其在 Fluss 上被授权的数据,无需为每个用户单独创建 Catalog。
密码方式
适用于 Fluss 集群版本低于 0.9-ali-5.0。
UI 方式
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击。
在创建 Catalog对话框中,选择内置 Catalog页签,在 Catalog 类型列表中选择 Fluss,然后单击下一步。
-
填写参数配置信息。
配置项
说明
是否必填
备注
name
Fluss Catalog 名称。
是
请填写为自定义英文名。
cluster
Fluss 集群名称。
否
从下拉列表中选择已创建的 Fluss 集群。选择后系统自动填充
bootstrap.servers。default-database
默认连接的数据库名称。
否
默认值为
fluss,已预填。bootstrap.servers
Fluss 集群的服务器地址列表。
是
多个地址使用英文逗号(,)分隔。选择 cluster 后自动填充,也可手动填写。
client.security.sasl.username
Fluss 实例的管理员用户名。
是
可通过 Fluss 控制台的集群详情进行查看。
client.security.sasl.password
Fluss 实例的管理员密码。
是
-
单击确定。创建完成后,元数据下即可查看新建的 Catalog。
SQL 方式
SQL 方式依赖 Session 集群,且 Session 集群版本不能低于 VVR 11.7。低于该版本时无法通过 SQL 创建 Catalog,请使用 UI 方式。
在数据查询文本编辑区域,输入以下命令。
CREATE CATALOG fluss_catalog WITH (
'type' = 'fluss',
'bootstrap.servers' = '<bootstrap.servers>',
'default-database' = 'fluss',
'client.security.protocol' = 'SASL',
'client.security.sasl.mechanism' = 'PLAIN',
'client.security.sasl.username' = '<username>',
'client.security.sasl.password' = '<password>'
);
输入创建 Catalog 的代码后,单击右上角的运行完成 Catalog 创建。
参数说明如下:
|
参数 |
说明 |
是否必填 |
备注 |
|
type |
Catalog 类型。 |
是 |
固定值为 |
|
bootstrap.servers |
Fluss 集群的服务器地址列表。 |
是 |
可通过 Fluss 控制台的集群详情进行查看。 |
|
default-database |
默认连接的数据库名称。 |
否 |
默认值为 |
|
client.security.protocol |
安全认证协议。 |
是 |
固定值为 |
|
client.security.sasl.mechanism |
SASL 认证机制。 |
是 |
固定值为 |
|
client.security.sasl.username |
Fluss 实例的管理员用户名。 |
是 |
可通过 Fluss 控制台的集群详情进行查看。 |
|
client.security.sasl.password |
Fluss 实例的管理员密码。 |
是 |
创建自定义 Catalog
Fluss 迭代快于实时计算 Flink。此处提供最新的自定义 Catalog 包,用于提前体验尚未随 VVR 版本发布的 Fluss Catalog 功能。
仅当所需 Fluss 功能依赖的 VVR 版本尚未发布时使用自定义 Catalog。其余场景请使用内置 Fluss Catalog。
自定义 Catalog 仅支持通过控制台上传 JAR 包创建。创建后的使用方式与内置 Fluss Catalog 一致。
-
下载自定义 Catalog JAR 包:fluss-ali-vvr-11-0.9-ali-catalog-6.0.jar
-
在创建 Catalog对话框中,选择自定义 Catalog页签。
-
单击创建自定义 Catalog 类型,上传已下载的 JAR 包,单击下一步。
-
加载完成后,选择Catalog 类型为
fluss-latest,单击确认。 -
选择此 Catalog,单击下一步,创建自定义 Catalog。
CREATE CATALOG fluss_catalog WITH ( 'type' = 'fluss-latest', 'bootstrap.servers' = '<bootstrap.servers>', 'default-database' = 'fluss', 'client.security.protocol' = 'SASL', 'client.security.sasl.mechanism' = 'PLAIN', 'client.security.sasl.username' = '<username>', 'client.security.sasl.password' = '<password>' );参数
说明
是否必填
备注
type
Catalog 类型。
是
固定值为
fluss-latest。bootstrap.servers
Fluss 集群的服务器地址列表。
是
可通过 Fluss 控制台的集群详情进行查看。
default-database
默认连接的数据库名称。
否
默认值为
fluss。client.security.protocol
安全认证协议。
是
固定值为
SASL。client.security.sasl.mechanism
SASL 认证机制。
是
固定值为
PLAIN。client.security.sasl.username
Fluss 实例的管理员用户名。
是
可通过 Fluss 控制台的集群详情进行查看。
client.security.sasl.password
Fluss 实例的管理员密码。
是
查看 Fluss Catalog
Fluss Catalog 配置成功后,按以下步骤查看 Fluss 元数据。
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击数据管理。
-
在 Catalog 列表页面,查看 Catalog 名称和类型。
-
单击查看,查看目标 Catalog 下的数据库和表。
使用 Fluss Catalog
创建 Fluss 表
Fluss Catalog 配置完成后,可在作业中引用 Fluss Catalog 表信息,作为源表、结果表和维表时无需声明表的 DDL。
在数据查询文本编辑区域,输入以下建表语句。
语法:
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` (
...
);
示例:
-- 创建主键表
CREATE TABLE `fluss_catalog`.`fluss`.`product` (
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 `fluss_catalog`.`fluss`.`orders` (
order_id BIGINT,
item_id BIGINT,
amount INT,
address STRING
);
也可以先切换到目标 Catalog 和数据库,再创建表:
USE CATALOG fluss_catalog;
USE fluss;
CREATE TABLE product (
shop_id BIGINT,
user_id BIGINT,
num_orders INT,
total_amount INT,
PRIMARY KEY (shop_id, user_id) NOT ENFORCED
) WITH (
'bucket.num' = '4'
);
读写 Fluss 表
将源表数据写入 Fluss 表。
语法:
INSERT INTO `${catalog_name}`.`${db_name}`.`${table_name}`
SELECT ...
FROM ${other_source_table};
示例:
INSERT INTO `fluss_catalog`.`fluss`.`product`
SELECT shop_id, user_id, num_orders, total_amount
FROM source_table;
读取 Fluss 表数据写入结果表。
语法:
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${table_name}`;
示例:
INSERT INTO sink_table
SELECT shop_id, user_id, num_orders, total_amount
FROM `fluss_catalog`.`fluss`.`product`;
删除 Fluss Catalog
删除 Fluss Catalog 不会影响已运行的作业,但会对未上线或需暂停恢复的作业产生影响,请谨慎操作。
UI 方式
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击数据管理。
-
在 Catalog 列表页面,单击目标 Catalog 名称对应操作列下的删除。
-
在弹出的对话框中,单击删除。
-
删除完成后,在左侧元数据区域查看目标 Catalog 是否已删除。
SQL 方式
在数据查询文本编辑区域,输入以下命令。
DROP CATALOG ${catalog_name};
其中,${catalog_name} 为要删除的、在实时计算开发控制台上显示的 Fluss Catalog 名称。
选中删除 Catalog 的命令,单击右上角的运行。
在左侧元数据区域,查看目标 Catalog 是否已删除。