管理Hologres Catalog
本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。
Catalog提供了元數(shù)據(jù)信息,例如數(shù)據(jù)庫、表、分區(qū)以及數(shù)據(jù)庫或其他外部系統(tǒng)中存儲(chǔ)的函數(shù)和信息。配置Hologres Catalog后,您可以在實(shí)時(shí)計(jì)算開發(fā)控制臺(tái)直接讀取Hologres元數(shù)據(jù),無需再手動(dòng)注冊(cè)Hologres表,提高作業(yè)開發(fā)的效率且保證數(shù)據(jù)的正確性。本文為您介紹如何配置、查看及刪除Hologres Catalog。
使用限制
僅Flink 1.13及以上版本支持配置Hologres Catalog。
不支持修改Catalog。
僅Flink計(jì)算引擎VVR-6.0.1-Flink-1.15及以上版本支持建表時(shí)設(shè)置表屬性。
僅Flink計(jì)算引擎VVR-6.0.3-Flink-1.15及以上版本支持創(chuàng)建Catalog時(shí)配置默認(rèn)參數(shù)以及修改Hologres表屬性。
實(shí)時(shí)計(jì)算Flink版僅支持讀寫Hologres內(nèi)表,因此Hologres實(shí)例必須是獨(dú)占實(shí)例,不支持Hologres共享集群實(shí)例。
創(chuàng)建Hologres Catalog
支持UI與SQL命令兩種方式配置Hologres Catalog,推薦使用UI方式配置Hologres Catalog。
UI方式(推薦)
進(jìn)入元數(shù)據(jù)管理頁面。
登錄實(shí)時(shí)計(jì)算控制臺(tái),單擊目標(biāo)工作空間操作列下的控制臺(tái)。
單擊元數(shù)據(jù)管理。
單擊創(chuàng)建Catalog,選擇Hologres后,單擊下一步。
填寫參數(shù)配置信息。
重要Catalog創(chuàng)建完成后,以下配置信息都不支持修改。如果需要修改,您需要?jiǎng)h除掉已創(chuàng)建的Catalog,重新進(jìn)行創(chuàng)建。
參數(shù)
說明
是否必填
catalogname
Hologres Catalog名稱。
是
endpoint
Hologres的Endpoint地址。
詳情請(qǐng)參見實(shí)例配置。
是
username
阿里云賬號(hào)的AccessKey。
說明當(dāng)前配置的AccessKey對(duì)應(yīng)的用戶需要能夠訪問所有的Hologres數(shù)據(jù)庫,Hologres數(shù)據(jù)庫權(quán)限請(qǐng)參見Hologres權(quán)限模型概述。
是
password
阿里云賬號(hào)的AccessSecret。
是
dbname
您訪問Hologres的默認(rèn)數(shù)據(jù)庫名稱。
是
單擊確定。
說明創(chuàng)建完成后,元數(shù)據(jù)下即可查看新建的Catalog。
SQL方式
在查詢腳本文本編輯區(qū)域,輸入配置Hologres Catalog的命令。
CREATE CATALOG <catalogname> WITH ( 'type' = 'hologres', 'endpoint' = '<endpoint>', 'username' = '<AccessKey>', 'password' = '<AccessSecret>', 'dbname' = '<dbname>' );
參數(shù)詳情如下表所示。
參數(shù)
說明
是否必填
catalogname
Hologres Catalog名稱。僅支持小寫字母a-z和數(shù)字0-9,不含大寫字母、中劃線(-)、下劃線(_)等特殊字符
是
type
類型,固定值為hologres。
是
endpoint
Hologres的Endpoint地址。
詳情請(qǐng)參見實(shí)例配置。
是
username
阿里云賬號(hào)的AccessKey。
說明當(dāng)前配置的AccessKey對(duì)應(yīng)的用戶需要能夠訪問所有的Hologres數(shù)據(jù)庫,Hologres數(shù)據(jù)庫權(quán)限請(qǐng)參見Hologres權(quán)限模型概述。
是
password
阿里云賬號(hào)的AccessSecret。
是
dbname
您訪問Hologres的默認(rèn)數(shù)據(jù)庫名稱。
是
ignore-non-persisted-options
在使用Hologres Catalog時(shí)創(chuàng)建帶有不可持久化選項(xiàng)的表時(shí),是否忽略非可持久化選項(xiàng)。參數(shù)取值如下:
true(默認(rèn)值):可以成功創(chuàng)建出表,而忽略所有非可持久化選項(xiàng)。
false:會(huì)報(bào)創(chuàng)建表失敗的錯(cuò)誤。
說明Hologres Catalog表選項(xiàng)的可持久化意味著當(dāng)再次從Catalog讀取該表的相關(guān)信息時(shí),可以重新獲取您在DDL中定義的一致的信息。目前僅支持endpoint、username、password和dbname可持久化選項(xiàng)。
否
其他Hologres連接器支持的參數(shù)
僅Flink計(jì)算引擎VVR 6.0.3-Flink 1.15及以上版本支持,在創(chuàng)建Catalog時(shí)可以填入一些參數(shù),包括WITH參數(shù),之后使用此Catalog中的表時(shí),將會(huì)默認(rèn)配置這些參數(shù)。
說明使用此功能,需要ignore-non-persisted-options參數(shù)配置為true。
Flink計(jì)算引擎VVR 6.0.3-Flink 1.15以下版本只能通過Hints為每張表分別進(jìn)行參數(shù)的配置。
否
選中創(chuàng)建Catalog的代碼后,單擊左側(cè)代碼行數(shù)上的運(yùn)行。
查看Hologres Catalog
Hologres Catalog配置成功后,您可以通過以下步驟查看Hologres元數(shù)據(jù)。
進(jìn)入元數(shù)據(jù)管理頁面。
單擊目標(biāo)工作空間操作列下的控制臺(tái)。
單擊元數(shù)據(jù)管理。
在Catalog列表頁面,查看Catalog名稱和類型。
說明如果您需要查看目標(biāo)Catalog下的數(shù)據(jù)庫和表,請(qǐng)單擊查看。
如果Schema為public,則表名稱前面就省略了Schema的前綴,即直接顯示tableName。
使用Hologres Catalog
如果Schema為public,在填寫${schema_name.table_name}時(shí),可以省略模式名稱的前綴,直接填寫tableName,即${table_name}。
通過Hologres Catalog讀取出來的表支持消費(fèi)update數(shù)據(jù),讀取出來的Hologres表的ignoredelete屬性默認(rèn)為false,mutatetype屬性默認(rèn)為insertorupdate。ignoredelete和mutatetype屬性含義詳情請(qǐng)參見寬表Merge和局部更新功能。
創(chuàng)建Hologres表
UI方式
進(jìn)入元數(shù)據(jù)管理頁面。
單擊目標(biāo)工作空間操作列下的控制臺(tái)。
單擊元數(shù)據(jù)管理。
單擊目標(biāo)Catalog名稱對(duì)應(yīng)操作列的查看。
單擊目標(biāo)數(shù)據(jù)庫名稱對(duì)應(yīng)操作列的查看。
單擊創(chuàng)建表。
在使用內(nèi)置連接器連接頁簽,單擊連接方式,選擇表類型。
單擊下一步。
填寫建表語句并配置相關(guān)參數(shù)信息。代碼示例如下。
CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` ( id INT, name STRING ) WITH ( 'connector' = 'hologres' );
單擊確定。
SQL命令方式
在查詢腳本文本編輯區(qū)域,輸入以下建表語句。
通常,有以下幾種方式創(chuàng)建Hologres表:
使用
USE CATALOG HoloName
命令直接引用Hologres數(shù)據(jù)服務(wù)。USE CATALOG ${catalog_name}; CREATE TABLE `${db_name}`.`${schema_name.table_name}`( ... ) WITH ( 'connector' = 'hologres' );
USE語法詳情請(qǐng)參見USE語句。
DDL語句中直接引用Hologres數(shù)據(jù)服務(wù)信息。
CREATE TABLE `${catalog_name}`.`${db_name}`.`${schema_name.table_name}` ( ... ) WITH ( 'connector' = 'hologres' );
DDL語句中設(shè)置物理表屬性。
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' );
說明在已注冊(cè)的Hologres數(shù)據(jù)服務(wù)下創(chuàng)建表時(shí),WITH參數(shù)中connector為必填參數(shù),且取值為hologres。可省略endpoint等其他參數(shù)。
在創(chuàng)建Hologres表時(shí),在WITH參數(shù)中指定的物理表屬性參數(shù),部分屬性無法修改。
Flink計(jì)算引擎VVR-6.0.3-Flink-1.15以下版本創(chuàng)建Hologres表時(shí),在WITH參數(shù)中指定的物理表屬性參數(shù)僅在首次建表時(shí)有效,不允許修改。如果您需要修改,則請(qǐng)到Hologres側(cè)修改。Flink計(jì)算引擎VVR-6.0.3-Flink-1.15及以上版本支持修改Hologres物理表屬性。
目前不支持直接在Hologres表中添加或修改支持的WITH參數(shù)。對(duì)于這些參數(shù),您可以通過SQL hints的方式在INSERT語句中添加或修改。
Flink計(jì)算引擎VVR-6.0.5-Flink-1.15及以上版本支持建表時(shí)設(shè)置列描述,對(duì)應(yīng)的Hologres物理表也會(huì)繼承相應(yīng)的列描述。
選中建表語句,單擊左側(cè)代碼行數(shù)上的運(yùn)行。
創(chuàng)建Hologres表時(shí),允許在WITH參數(shù)中設(shè)置物理表屬性,合理的表屬性設(shè)置可以有助于系統(tǒng)高效地組織和查詢數(shù)據(jù)。當(dāng)前支持的屬性參數(shù)和使用示例如下表所示,其中以table_property. 為前綴的是物理表屬性。
參數(shù) | 使用示例 | 是否支持修改 |
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創(chuàng)建表時(shí),是否打開類型寬容模式,參數(shù)取值如下:
說明
|
當(dāng)前支持的表屬性與Hologres側(cè)是一致的,Catalog側(cè)僅是加上了table_property.
前綴用以區(qū)分。參數(shù)詳情請(qǐng)參見建表概述和訂閱Hologres Binlog。
修改Hologres表
僅Flink計(jì)算引擎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' );
說明僅部分表屬性支持修改,詳情參考創(chuàng)建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表中讀取數(shù)據(jù)
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`
寫入結(jié)果數(shù)據(jù)至Hologres表
INSERT INTO `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`
SELECT ...
FROM ${other_source_table}
作為CTAS的目標(biāo)端Catalog
CREATE TABLE IF NOT EXISTS `${catalog_name}`.`${db_name}`.`${schema_name.table_name}`
WITH (
'connector' = 'hologres'
) AS TABLE ${other_source_table};
CTAS支持在WITH參數(shù)中設(shè)置物理表屬性,在創(chuàng)建目標(biāo)表時(shí),同時(shí)在表上設(shè)置對(duì)應(yīng)的屬性。具體支持的表屬性參數(shù)詳情,請(qǐng)參見創(chuàng)建Hologres表。
當(dāng)從源端同步數(shù)據(jù)過程中,為保證數(shù)據(jù)能夠?qū)懭際ologres,Hologres Catalog會(huì)在以下情況被迫改寫目標(biāo)端的Schema:
上游Schema使用DECIMAL類型的列作為主鍵。
由于Hologres不支持DECIMAL類型作為主鍵,因此Hologre默認(rèn)會(huì)改寫該列類型為BIGINT。如果該改寫不滿足您的需求,則您也可以使用CTAS語法將引用的類轉(zhuǎn)換為STRING類型,并重新建立主鍵。
上游Schema中包含類型TIME、TIMESTAMP或TIMESTAMP_LTZ且精度大于6。
由于Hologres支持的時(shí)間類型精度為6,因此為了確保數(shù)據(jù)能夠?qū)懭氲紿ologres中,F(xiàn)link會(huì)隱式地丟棄高于Hologres所支持的最高精度的部分。
作為CDAS的目標(biāo)端Catalog
CREATE DATABASE IF NOT EXISTS `${catalog_name}`.`${db_name}`
WITH (
'sink.parallelism' = '5' -- 設(shè)置每張結(jié)果表的并發(fā)數(shù)。
) AS DATABASE ${other_source_database};
在同步過程之中,您可以在WITH參數(shù)聲明結(jié)果表的參數(shù)。當(dāng)作業(yè)啟動(dòng)時(shí),這些參數(shù)將被應(yīng)用到需要同步的下游表中。具體可以調(diào)節(jié)的參數(shù)請(qǐng)參見實(shí)時(shí)數(shù)倉Hologres結(jié)果表。
除了交互式Hologres結(jié)果表中支持的參數(shù)外,CDAS還支持在WITH參數(shù)中指定schemaname,將數(shù)據(jù)同步到Hologres目標(biāo)庫的指定Schema中。參數(shù)解釋如下表所示。
參數(shù) | 說明 | 是否必填 | 備注 |
schemaname | schema名稱。 | 否 | 默認(rèn)值為public。 |
由于每張目標(biāo)表可能需要設(shè)置不同的表屬性,而WITH參數(shù)中不支持為每張表分別設(shè)置屬性,因此CDAS不支持設(shè)置物理表屬性。如果您需要設(shè)置表屬性,則需要先手動(dòng)創(chuàng)建目標(biāo)表,再去啟動(dòng)CDAS作業(yè)。表屬性參數(shù)詳情請(qǐng)參見上文的創(chuàng)建Hologres表部分。
刪除Hologres Catalog
UI方式
進(jìn)入元數(shù)據(jù)管理頁面。
單擊目標(biāo)工作空間操作列下的控制臺(tái)。
單擊元數(shù)據(jù)管理。
在Catalog列表頁面,單擊目標(biāo)Catalog名稱對(duì)應(yīng)操作列下的刪除。
在彈出的對(duì)話框中,單擊刪除。
說明刪除完成后,在左側(cè)元數(shù)據(jù)區(qū)域下即可查看目標(biāo)Catalog已刪除。
SQL命令方式
在查詢腳本文本編輯區(qū)域,輸入以下命令。
DROP CATALOG ${catalog_name}
其中,catalog_name為您要?jiǎng)h除的在Flink全托管開發(fā)控制臺(tái)上顯示的Hologres Catalog名稱。
警告刪除Hologres Catalog不會(huì)影響已運(yùn)行的作業(yè),但對(duì)未上線或者需要暫停恢復(fù)的作業(yè)均產(chǎn)生影響,請(qǐng)您謹(jǐn)慎操作。
選中刪除Catalog的命令,鼠標(biāo)右鍵選擇運(yùn)行。
在左側(cè)元數(shù)據(jù)區(qū)域,查看目標(biāo)Catalog是否已刪除。