配置 Fluss Catalog 後,可在Realtime Compute開發控制台直接讀取 Fluss 中繼資料,無需手動註冊 Fluss 表,提高作業開發效率並保證資料的正確性。本文介紹如何建立、查看、使用及刪除 Fluss Catalog,以及如何更新自訂 Fluss Catalog。
前提條件
-
已建立 Fluss 叢集,具體操作請參見建立 Fluss 叢集。
-
Fluss 叢集與 Flink 工作空間位於同一地區且網路互連(位於同一 VPC 或已配置網路連通)。
使用限制
-
不支援修改 Catalog。如需修改,需先刪除已建立的 Catalog 再重新建立。
-
密碼方式建立的 Catalog 使用管理員身份串連 Fluss 叢集,所有使用該 Catalog 的作業均以管理員權限訪問資料,無法按使用者隔離資料存取權限。
-
免密方式建立的 Catalog 根據當前操作使用者身份自動進行許可權認證,不同使用者使用同一個 Catalog 時,只能訪問其在 Fluss 上被授權的資料。
-
免密方式建立的 Catalog 依賴 RAM 許可權。建立 Catalog 時,需具備
fluss:ListClusters、fluss:GetCluster、fluss:GetToken、fluss:GetFeatureList許可權;啟動引用該 Catalog 的作業時,至少需具備fluss:GetToken許可權。 -
免密方式下,實際訪問 Fluss 叢集的身份需登入為 Fluss 叢集成員並開啟密碼認證,且已獲得目標資料庫或表的資源授權。未滿足時,作業啟動失敗並提示無法擷取 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。免密方式所需的 RAM 許可權與叢集內授權要求,請參見使用限制。
密碼方式
適用於 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 迭代快於Realtime Compute Flink。此處提供最新的自訂 Catalog 包,用於提前體驗尚未隨 VVR 版本發布的 Fluss Catalog 功能。
僅當所需 Fluss 功能依賴的 VVR 版本尚未發布時使用自訂 Catalog。其餘情境請使用內建 Fluss Catalog。
自訂 Catalog 僅支援通過控制台上傳 JAR 包建立。建立後的使用方式與內建 Fluss Catalog 一致。
-
下載自訂 Catalog JAR 包:fluss-ali-vvr-11-0.9-ali-7.1.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 的版本。更新方式為:先刪除原有 Catalog,再使用新版本的 Fluss Catalog JAR 包建立同名 Catalog。
Catalog 名稱必須保持不變,以確保作業重啟或重新上線時仍能引用該 Catalog,並載入新版本 JAR 包。
更新對正在啟動並執行 Flink 作業無感,不觸發作業重啟,不影響運行中的作業狀態。後續使用新版本恢複作業時,狀態保持相容。
從刪除舊 Catalog 到同名新 Catalog 建立完成的替換期間,不要重啟或重新上線引用該 Catalog 的作業。正在運行且不發生重啟的作業不受影響。
查看 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} 為要刪除的、在Realtime Compute開發控制台上顯示的 Fluss Catalog 名稱。
選中刪除 Catalog 的命令,單擊右上方的運行。
在左側中繼資料地區,查看目標 Catalog 是否已刪除。