Catalog提供了中繼資料資訊,例如資料庫、表、分區以及資料庫或其他外部系統中儲存的函數和資訊。配置Hologres Catalog後,您可以在Realtime Compute開發控制台直接讀取Hologres中繼資料,無需再手動註冊Hologres表,提高作業開發的效率且保證資料的正確性。本文為您介紹如何配置、查看及刪除Hologres Catalog。
使用限制
僅Flink 1.13及以上版本支援配置Hologres Catalog。
不支援修改Catalog。
僅Flink計算引擎VVR-6.0.1-Flink-1.15及以上版本支援建表時設定表屬性。
僅Flink計算引擎VVR-6.0.3-Flink-1.15及以上版本支援建立Catalog時配置預設參數以及修改Hologres表屬性。
Realtime ComputeFlink版僅支援讀寫Hologres內表,因此Hologres執行個體必須是獨佔執行個體,不支援Hologres共用叢集執行個體。
建立Hologres Catalog
支援UI與SQL命令兩種方式配置Hologres Catalog,推薦使用UI方式配置Hologres Catalog。
UI方式(推薦)
進入中繼資料管理頁面。
登入Realtime Compute控制台,單擊目標工作空間操作列下的控制台。
單擊中繼資料管理。
單擊建立Catalog,選擇Hologres後,單擊下一步。
填寫參數配置資訊。
重要Catalog建立完成後,以下配置資訊都不支援修改。如果需要修改,您需要刪除掉已建立的Catalog,重新進行建立。
參數
說明
是否必填
catalogname
Hologres Catalog名稱。
是
endpoint
Hologres的Endpoint地址。
詳情請參見執行個體配置。
是
username
阿里雲帳號的AccessKey。
說明當前配置的AccessKey對應的使用者需要能夠訪問所有的Hologres資料庫,Hologres資料庫許可權請參見Hologres許可權模型概述。
是
password
阿里雲帳號的AccessSecret。
是
dbname
您訪問Hologres的預設資料庫名稱。
是
單擊確定。
說明建立完成後,中繼資料下即可查看建立的Catalog。
SQL方式
在查詢指令碼文本編輯地區,輸入配置Hologres Catalog的命令。
CREATE CATALOG <catalogname> WITH ( 'type' = 'hologres', 'endpoint' = '<endpoint>', 'username' = '<AccessKey>', 'password' = '<AccessSecret>', 'dbname' = '<dbname>' );
參數詳情如下表所示。
參數
說明
是否必填
catalogname
Hologres Catalog名稱。僅支援小寫字母a-z和數字0-9,不含大寫字母、中劃線(-)、底線(_)等特殊字元
是
type
類型,固定值為hologres。
是
endpoint
Hologres的Endpoint地址。
詳情請參見執行個體配置。
是
username
阿里雲帳號的AccessKey。
說明當前配置的AccessKey對應的使用者需要能夠訪問所有的Hologres資料庫,Hologres資料庫許可權請參見Hologres許可權模型概述。
是
password
阿里雲帳號的AccessSecret。
是
dbname
您訪問Hologres的預設資料庫名稱。
是
ignore-non-persisted-options
在使用Hologres Catalog時建立帶有不可持久化選項的表時,是否忽略非可持久化選項。參數取值如下:
true(預設值):可以成功建立出表,而忽略所有非可持久化選項。
false:會報建立表失敗的錯誤。
說明Hologres Catalog表選項的可持久化意味著當再次從Catalog讀取該表的相關資訊時,可以重新擷取您在DDL中定義的一致的資訊。目前僅支援endpoint、username、password和dbname可持久化選項。
否
其他Hologres連接器支援的參數
僅Flink計算引擎VVR 6.0.3-Flink 1.15及以上版本支援,在建立Catalog時可以填入一些參數,包括WITH參數,之後使用此Catalog中的表時,將會預設配置這些參數。
說明使用此功能,需要ignore-non-persisted-options參數配置為true。
Flink計算引擎VVR 6.0.3-Flink 1.15以下版本只能通過Hints為每張表分別進行參數的配置。
否
選中建立Catalog的代碼後,單擊左側程式碼數上的運行。
查看Hologres Catalog
Hologres Catalog配置成功後,您可以通過以下步驟查看Hologres中繼資料。
進入中繼資料管理頁面。
單擊目標工作空間操作列下的控制台。
單擊中繼資料管理。
在Catalog列表頁面,查看Catalog名稱和類型。
說明如果您需要查看目標Catalog下的資料庫和表,請單擊查看。
如果Schema為public,則表名稱前面就省略了Schema的首碼,即直接顯示tableName。
使用Hologres Catalog
如果Schema為public,在填寫${schema_name.table_name}時,可以省略模式名稱的首碼,直接填寫tableName,即${table_name}。
通過Hologres Catalog讀取出來的表支援消費update資料,讀取出來的Hologres表的ignoredelete屬性預設為false,mutatetype屬性預設為insertorupdate。ignoredelete和mutatetype屬性含義詳情請參見寬表Merge和局部更新功能。
建立Hologres表
UI方式
進入中繼資料管理頁面。
單擊目標工作空間操作列下的控制台。
單擊中繼資料管理。
單擊目標Catalog名稱對應操作列的查看。
單擊目標資料庫名稱對應操作列的查看。
單擊建立表。
在使用內建連接器串連頁簽,單擊串連方式,選擇表類型。
單擊下一步。
填寫建表語句並配置相關參數資訊。程式碼範例如下。
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( id INT, name STRING ) WITH ( 'connector' = 'hologres' );
單擊確定。
SQL命令方式
在查詢指令碼文本編輯地區,輸入以下建表語句。
通常,有以下幾種方式建立Hologres表:
使用
USE CATALOG HoloName
命令直接引用Hologres資料服務。USE CATALOG ${catalog_name}; CREATE TABLE `${db_name}`.`${schema_name.table_name}`( ... ) WITH ( 'connector' = 'hologres' );
USE文法詳情請參見USE語句。
DDL語句中直接引用Hologres資料服務資訊。
CREATE TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` ( ... ) WITH ( 'connector' = 'hologres' );
DDL語句中設定物理表屬性。
CREATE TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` ( ... ) WITH ( 'connector' = 'hologres', 'table_property.orientation' = 'column', 'table_property.distribution_key' = 'a', 'table_property.clustering_key' = 'b:desc', 'table_property.bitmap_columns' = 'a,b', 'table_property.segment_key' = 'c', 'table_property.time_to_live_in_seconds' = '86400', 'table_property.binlog.level' = 'replica', 'table_property.binlog.ttl' = '86400' );
說明在登入的Hologres資料服務下建立表時,WITH參數中connector為必填參數,且取值為hologres。可省略endpoint等其他參數。
在建立Hologres表時,在WITH參數中指定的物理表屬性參數,部分屬性無法修改。
Flink計算引擎VVR-6.0.3-Flink-1.15以下版本建立Hologres表時,在WITH參數中指定的物理表屬性參數僅在首次建表時有效,不允許修改。如果您需要修改,則請到Hologres側修改。Flink計算引擎VVR-6.0.3-Flink-1.15及以上版本支援修改Hologres物理表屬性。
目前不支援直接在Hologres表中添加或修改支援的WITH參數。對於這些參數,您可以通過SQL hints的方式在INSERT語句中添加或修改。
Flink計算引擎VVR-6.0.5-Flink-1.15及以上版本支援建表時設定列描述,對應的Hologres物理表也會繼承相應的列描述。
選中建表語句,單擊左側程式碼數上的運行。
建立Hologres表時,允許在WITH參數中設定物理表屬性,合理的表屬性設定可以有助於系統高效地組織和查詢資料。當前支援的屬性參數和使用樣本如下表所示,其中以table_property. 為首碼的是物理表屬性。
參數 | 使用樣本 | 是否支援修改 |
table_property.orientation | 'table_property.orientation' = 'row,column' | 不支援修改 |
table_property.table_group | 'table_property.table_group' = 'table_group_xxx' | |
table_property.distribution_key | 'table_property.distribution_key' = 'a,b' | |
table_property.clustering_key | 'table_property.clustering_key' = 'a,b:desc' | |
table_property.segment_key | 'table_property.segment_key' = 'c,d' | |
table_property.bitmap_columns | 'table_property.bitmap_columns' = 'a:on,b:off' | 支援修改 |
table_property.dictionary_encoding_columns | 'table_property.dictionary_encoding_columns' = 'a:on,b:off,c:auto' | |
table_property.time_to_live_in_seconds | 'table_property.time_to_live_in_seconds' = '864000' | |
table_property.binlog.level | 'table_property.binlog.level' = 'replica' | |
table_property.binlog.ttl | 'table_property.binlog.ttl' = '86400' | |
enableTypeNormalization | 'enableTypeNormalization' = 'true' | 在使用Hologres Catalog建立表時,是否開啟類型寬容模式,參數取值如下:
說明
|
當前支援的表屬性與Hologres側是一致的,Catalog側僅是加上了table_property.
首碼用以區分。參數詳情請參見建表概述和訂閱Hologres Binlog。
修改Hologres表
僅Flink計算引擎VVR-6.0.5-Flink-1.15及以上版本支援修改表操作。
目前Hologres Catalog支援的修改表操作及樣本如下:
修改表屬性
ALTER TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` SET ( 'table_property.binlog.level' = 'replica', 'table_property.binlog.ttl' = '64700' );
說明僅部分表屬性支援修改,詳情參考建立Hologres表。
重新命名表
ALTER TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` RENAME TO `${catalog_name}`.`${db_name}`.`${schema_name.new_table_name}`;
增加列
ALTER TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` ADD <column_name> <column_datatype> COMMENT '<column_comment>';
修改列名
ALTER TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` RENAME <old_column_name> TO <new_column_name>;
修改列注釋
ALTER TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` MODIFY <column_name> <original_column_type> COMMENT '<new_column_comment>';
從Hologres表中讀取資料
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`
寫入結果資料至Hologres表
INSERT INTO `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`
SELECT ...
FROM ${other_source_table}
作為CTAS的目標端Catalog
CREATE TABLE IF NOT EXISTS `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`
WITH (
'connector' = 'hologres'
) AS TABLE ${other_source_table};
CTAS支援在WITH參數中設定物理表屬性,在建立目標表時,同時在表上設定對應的屬性。具體支援的表屬性參數詳情,請參見建立Hologres表。
當從源端同步資料過程中,為保證資料能夠寫入Hologres,Hologres Catalog會在以下情況被迫改寫目標端的Schema:
上遊Schema使用DECIMAL類型的列作為主鍵。
由於Hologres不支援DECIMAL類型作為主鍵,因此Hologre預設會改寫該列類型為BIGINT。如果該改寫不滿足您的需求,則您也可以使用CTAS文法將引用的類轉換為STRING類型,並重建立立主鍵。
上遊Schema中包含類型TIME、TIMESTAMP或TIMESTAMP_LTZ且精度大於6。
由於Hologres支援的時間類型精度為6,因此為了確保資料能夠寫入到Hologres中,Flink會隱式地丟棄高於Hologres所支援的最高精度的部分。
作為CDAS的目標端Catalog
CREATE DATABASE IF NOT EXISTS `${catalog_name}`.`${db_name}`
WITH (
'sink.parallelism' = '5' -- 設定每張結果表的並發數。
) AS DATABASE ${other_source_database};
在同步過程之中,您可以在WITH參數聲明結果表的參數。當作業啟動時,這些參數將被應用到需要同步的下遊表中。具體可以調節的參數請參見即時數倉Hologres結果表。
除了互動式Hologres結果表中支援的參數外,CDAS還支援在WITH參數中指定schemaname,將資料同步到Hologres目標庫的指定Schema中。參數解釋如下表所示。
參數 | 說明 | 是否必填 | 備忘 |
schemaname | schema名稱。 | 否 | 預設值為public。 |
由於每張目標表可能需要設定不同的表屬性,而WITH參數中不支援為每張表分別設定屬性,因此CDAS不支援設定物理表屬性。如果您需要設定表屬性,則需要先手動建立目標表,再去啟動CDAS作業。表屬性參數詳情請參見上文的建立Hologres表部分。
刪除Hologres Catalog
UI方式
進入中繼資料管理頁面。
單擊目標工作空間操作列下的控制台。
單擊中繼資料管理。
在Catalog列表頁面,單擊目標Catalog名稱對應操作列下的刪除。
在彈出的對話方塊中,單擊刪除。
說明刪除完成後,在左側中繼資料地區下即可查看目標Catalog已刪除。
SQL命令方式
在查詢指令碼文本編輯地區,輸入以下命令。
DROP CATALOG ${catalog_name}
其中,catalog_name為您要刪除的在Flink全託管開發控制台上顯示的Hologres Catalog名稱。
警告刪除Hologres Catalog不會影響已啟動並執行作業,但對未上線或者需要暫停恢複的作業均產生影響,請您謹慎操作。
選中刪除Catalog的命令,滑鼠右鍵選擇運行。
在左側中繼資料地區,查看目標Catalog是否已刪除。