全部產品
Search
文件中心

Realtime Compute for Apache Flink:管理Hologres Catalog

更新時間:Jul 19, 2024

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方式(推薦)

  1. 進入中繼資料管理頁面。

    1. 登入Realtime Compute控制台,單擊目標工作空間操作列下的控制台

    2. 單擊中繼資料管理

  2. 單擊建立Catalog,選擇Hologres後,單擊下一步

  3. 填寫參數配置資訊。

    重要

    Catalog建立完成後,以下配置資訊都不支援修改。如果需要修改,您需要刪除掉已建立的Catalog,重新進行建立。

    HiveUI

    參數

    說明

    是否必填

    catalogname

    Hologres Catalog名稱。

    endpoint

    Hologres的Endpoint地址。

    詳情請參見執行個體配置

    username

    阿里雲帳號的AccessKey。

    說明

    當前配置的AccessKey對應的使用者需要能夠訪問所有的Hologres資料庫,Hologres資料庫許可權請參見Hologres許可權模型概述

    password

    阿里雲帳號的AccessSecret。

    dbname

    您訪問Hologres的預設資料庫名稱。

  4. 單擊確定

    說明

    建立完成後,中繼資料下即可查看建立的Catalog。

SQL方式

  1. 查詢指令碼文本編輯地區,輸入配置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為每張表分別進行參數的配置。

  2. 選中建立Catalog的代碼後,單擊左側程式碼數上的運行

    image..png

查看Hologres Catalog

Hologres Catalog配置成功後,您可以通過以下步驟查看Hologres中繼資料。

  1. 進入中繼資料管理頁面。

    1. 登入Realtime Compute控制台

    2. 單擊目標工作空間操作列下的控制台

    3. 單擊中繼資料管理

  2. 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方式

  1. 進入中繼資料管理頁面。

    1. 登入Realtime Compute控制台

    2. 單擊目標工作空間操作列下的控制台

    3. 單擊中繼資料管理

  2. 單擊目標Catalog名稱對應操作列的查看

  3. 單擊目標資料庫名稱對應操作列的查看

  4. 單擊建立表

  5. 使用內建連接器串連頁簽,單擊串連方式,選擇表類型。

  6. 單擊下一步

  7. 填寫建表語句並配置相關參數資訊。程式碼範例如下。

    CREATE TABLE `${catalog_name}`.`${db_name}`.`${table_name}` (
     id INT,
     name STRING
    ) WITH (
     'connector' = 'hologres'
    );
  8. 單擊確定

SQL命令方式

  1. 查詢指令碼文本編輯地區,輸入以下建表語句。

    通常,有以下幾種方式建立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物理表也會繼承相應的列描述。

  2. 選中建表語句,單擊左側程式碼數上的運行

    image

建立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建立表時,是否開啟類型寬容模式,參數取值如下:

  • true:啟用類型寬容模式,在建立Hologres物理表時,會使用類型歸一化後精度更高的資料類型。目前類型歸一化規則如下:

    • TINYINT、SMALLINT、INT和BIGINT歸一化為BIGINT。

    • CHAR、VARCHAR和STRING歸一化為STRING。

    • FLOAT和DOUBLE歸一化為DOUBLE。

    • 其他資料類型按照原本的類型映射規則建立,詳情請參見類型映射

      說明

      在資料類型發生修改時,歸一化規則的生效方式如下:

      • SMALLINT修改為INT,兩者的歸一化類型都是BIGINT,視為修改成功,CTAS作業正常運行。

      • 從FLOAT改為BIGINT,兩者的歸一化類型分別為DOUBLE和BIGINT,屬於不相容的情況,會拋出異常。

  • false(預設值):根據類型映射正常建立Hologres物理表。

說明
  • 在CTAS等情境中,可能需要調整已有欄位資料類型的精度。例如從VARCHAR(10)到VARCHAR(20)。

  • Flink計算引擎VVR 6.0.5-Flink 1.15以下版本,上遊修改資料類型可能導致CTAS任務失敗,只能重建目標表。

  • Flink計算引擎VVR 6.0.5-Flink 1.15以上版本支援類型寬容模式,在上遊發生資料類型修改事件時,只要所修改類型與原類型的歸一化類型相同,都視作修改成功。

  • 寬容模式應該在初次開機CTAS作業時開啟,如果在初次開機時未開啟寬容模式,需要刪除下遊表並且將作業無狀態重啟才會生效。

說明

當前支援的表屬性與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方式

  1. 進入中繼資料管理頁面。

    1. 登入Realtime Compute控制台

    2. 單擊目標工作空間操作列下的控制台

    3. 單擊中繼資料管理

  2. Catalog列表頁面,單擊目標Catalog名稱對應操作列下的刪除

  3. 在彈出的對話方塊中,單擊刪除

    說明

    刪除完成後,在左側中繼資料地區下即可查看目標Catalog已刪除。

SQL命令方式

  1. 查詢指令碼文本編輯地區,輸入以下命令。

    DROP CATALOG ${catalog_name}

    其中,catalog_name為您要刪除的在Flink全託管開發控制台上顯示的Hologres Catalog名稱。

    警告

    刪除Hologres Catalog不會影響已啟動並執行作業,但對未上線或者需要暫停恢複的作業均產生影響,請您謹慎操作。

  2. 選中刪除Catalog的命令,滑鼠右鍵選擇運行

  3. 在左側中繼資料地區,查看目標Catalog是否已刪除。