日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

外部表自動加載(Auto Load)

本文為您介紹如何使用Auto Load外部表自動加載的功能,實現(xiàn)MaxCompute和OSS數(shù)據(jù)的按需自動加載以及全量自動加載。

應用場景

Hologres與云原生大數(shù)據(jù)計算服務MaxCompute阿里云數(shù)據(jù)湖構(gòu)建(Data Lake Formation,DLF)阿里云對象存儲(Object Storage Service,OSS)深度兼容,無需數(shù)據(jù)搬遷,即可通過外部表加速查詢存儲于MaxCompute或OSS的數(shù)據(jù)。當需要加速的外部表較多時,您可以通過自動加載功能自動同步MaxCompute和DLF元數(shù)據(jù),自動創(chuàng)建Hologres外部表,降低手動創(chuàng)建外部表的成本。

  • 外部表按需加載:主要適用于數(shù)據(jù)源表數(shù)量較少且需要加速查詢的場景。當此功能開啟后,Hologres在查詢MaxCompute或OSS中的同名表時,會自動創(chuàng)建相應的Hologres外部表,以加速數(shù)據(jù)查詢。

    說明
    • 當Hologres自動加載相應MaxCompute或OSS的外部表時,如果Hologres內(nèi)部已經(jīng)存在同名的Schema和Table,自動加載功能將不會觸發(fā),而是會查詢Hologres的內(nèi)部表。

    • 由于自動加載時會創(chuàng)建相應的外部表,因此要求查詢的賬號必須具備在對應數(shù)據(jù)庫中創(chuàng)建和刪除Schema及Table的權(quán)限。但如果外部表已經(jīng)通過自動加載創(chuàng)建完成,那么只需要查詢權(quán)限就能進行后續(xù)的操作。

    • 該功能僅在查詢時觸發(fā)外部自動加載,不會周期性加載。

  • 外部表全量加載:主要適用于數(shù)據(jù)源表數(shù)量較多或多個數(shù)據(jù)源,且需要加速查詢的場景。在此功能開啟后,查詢時系統(tǒng)會自動創(chuàng)建與數(shù)據(jù)源匹配的外部表,從而實現(xiàn)所有數(shù)據(jù)源表的全面映射。此外,一旦數(shù)據(jù)全量加載完成,可通過參數(shù)設置定期檢查,確保在查詢時能自動創(chuàng)建新添加的外部表。這優(yōu)化了對大量外部表的管理,特別適用于需要提升BI查詢效率的環(huán)境。

自動加載

功能簡介

  • 自Hologres V1.1.43版本開始,支持MaxCompute外部表自動加載,此時僅支持MaxCompute兩層模型數(shù)據(jù)源。

  • 自Hologres V1.3.28版本開始,為了降低自動巡檢的系統(tǒng)資源消耗,外部表全量加載的周期性巡檢hg_experimental_load_all_foreign_table_interval_time參數(shù)默認值由5 min變?yōu)?span data-tag="ph" id="codeph-5n2-w6v-i65" class="ph">30 min

  • 自Hologres V2.2.1版本開始,支持以下功能。若您的實例為V2.1或以下版本,可聯(lián)系Hologres技術(shù)支持升級實例。

    • 外部表自動加載新增hg_experimental_load_foreign_table_mode = ['query' | 'period']來控制外部表自動加載的模式。

    • 外部表自動加載支持MaxCompute三層模型項目數(shù)據(jù)。MaxCompute三層模型詳情請參見Schema操作

    • 外部表自動加載支持MaxCompute外部表的Schema Evolution(如增加列、刪除列、修改列名及列順序)。

      針對已加載的Hologres外部表,如果外部數(shù)據(jù)源有表結(jié)構(gòu)變更,可使用如下GUC來開啟外部表Schema Evolution檢查。 開啟后,在查詢時會自動更新MaxCompute外部表元數(shù)據(jù)。該GUC建議僅在Session級別按需開啟,不要DB級別開啟,否則會產(chǎn)生大量表結(jié)構(gòu)變更檢查作業(yè),增大系統(tǒng)壓力。

      set hg_experimental_enable_auto_load_check_schema_evolution = on;
      說明

      外部表自動加載暫不支持OSS外部表的Schema Evolution。

    • 外部表自動加載支持通過DLF元數(shù)據(jù)自動加載,來加速查詢存儲于OSS的數(shù)據(jù),詳情請參見OSS數(shù)據(jù)湖加速

使用限制

  • 使用外部表自動加載時,MaxCompute和OSS數(shù)據(jù)源映射參數(shù)不能以hg_或者holo_開頭,這些是Hologres的保留關(guān)鍵字。

  • 每次查詢最多只能自動加載6張表,即一個SQL中最多包含6張表。若超過6張表,自動加載將失敗,需要重新查詢以便自動加載外部表。

  • 外部表自動加載時,如果MaxCompute表中包含Hologres外部表目前不支持的數(shù)據(jù)類型,那么該外部表將無法自動創(chuàng)建,您需要使用CREATE FOREIGN TABLE手動選擇支持的字段來創(chuàng)建外部表。

  • 如使用Auto Load自動加載OSS數(shù)據(jù),需通過執(zhí)行CREATE USER MAPPING命令,為訪問賬號(包括阿里云賬號)指定訪問DLF和OSS的Access Key、Access Secret。

  • 如您同時加載多個外部數(shù)據(jù)源的表到同一個Hologres Schema,后創(chuàng)建的外部表會覆蓋先創(chuàng)建的同名外部表,請將不同的數(shù)據(jù)源關(guān)聯(lián)到不同的Hologres Schema。

  • 通過Auto Load自動加載外部表時,指定了在Hologres中不存在的Schema,系統(tǒng)可自動創(chuàng)建該Schema,但要求用戶需具有db_admin權(quán)限。

  • 外部表全量自動加載場景下:

    • 不建議設置自動加載時間小于5分鐘。

    • 不建議對表超過1000張的外部數(shù)據(jù)源開啟全量自動加載。

操作步驟

開啟自動加載

  • 語法

    -- 打開自動加載
    ALTER DATABASE <database name> SET hg_experimental_enable_auto_load_foreign_table = on;
  • 參數(shù)說明

    database name:Hologres數(shù)據(jù)庫名稱。

(可選)設置自動加載模式

從Hologres V2.2.1版本開始,您可以根據(jù)實際業(yè)務需求設置自動加載模式,若您未設置自動加載模式,則默認采用外部表按需加載模式。Hologres V2.2.1以下版本無需設置。

  • 語法

    SET hg_experimental_load_foreign_table_mode = ['query' | 'period']
  • 取值說明如下:

    • query(默認值):外部表按需加載。

      -- 設置外部表加載模式為按需加載
      SET hg_experimental_load_foreign_table_mode = 'query';
    • period:外部表全量加載。

      -- 設置外部表加載模式為全量加載
      SET hg_experimental_load_foreign_table_mode = 'period';

配置映射關(guān)系

  • 語法

    • 配置MaxCompute映射關(guān)系

      • Hologres V2.2.1及以上版本

        --MaxCompute項目為三層模型
        ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>.<mc_schema>, [...]';
        --MaxCompute項目為兩層模型
        ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>, [...]';
      • Hologres V2.2.1以下版本

        ALTER DATABASE <database> SET hg_experimental_default_odps_project_list='<odps_project_name_1>,<odps_project_name_2>...';
    • 配置DLF映射關(guān)系

      --DLF Default Catalog
      ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_database> [...]';
      -- 自定義Catalog
      ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_catalog>.<dlf_database>, [...]';
  • 參數(shù)說明

    參數(shù)名稱

    說明

    database

    Hologres數(shù)據(jù)庫名稱。

    hologres_schema

    Hologres Schema名稱。

    mc_project

    需要自動加載的MaxCompute項目名稱。您可以登錄MaxCompute控制臺,在工作區(qū) > 項目管理頁面獲取MaxCompute項目名稱。

    odps_foreign_server

    訪問MaxCompute項目使用的server,固定為odps_server

    odps_project_name

    odps_project_name為MaxCompute的項目名稱,支持設置多個項目,中間使用逗號隔開即可。

    默認值為空,即不周期性地加載任何MaxCompute項目中表的元數(shù)據(jù)。

    說明

    僅Hologres V2.2.1以下版本需配置此參數(shù)。

    mc_schema

    MaxCompute的Schema名稱。

    說明

    僅已開啟三層模型的項目需配置此參數(shù),關(guān)于Schema詳情,請參見Schema操作

    dlf_foreign_server

    基于DLF_FDW創(chuàng)建的外部服務器。您可以執(zhí)行以下命令,獲取外部服務器名稱。詳情請參見OSS數(shù)據(jù)湖加速

    SELECT * FROM pg_foreign_server;

    dlf_catalog

    需要自動加載的DLF數(shù)據(jù)庫所在的數(shù)據(jù)目錄名。您可以登錄數(shù)據(jù)湖管理控制臺,選擇元數(shù)據(jù) > 元數(shù)據(jù)管理,然后在數(shù)據(jù)目錄頁簽,獲取數(shù)據(jù)目錄名稱。

    dlf_database

    需要自動加載的DLF數(shù)據(jù)庫名稱。您可以登錄數(shù)據(jù)湖管理控制臺,選擇元數(shù)據(jù) > 元數(shù)據(jù)管理,然后在數(shù)據(jù)庫頁簽,獲取數(shù)據(jù)庫名稱。

查詢數(shù)據(jù)

您可直接查看相應MaxCompute和DLF中的數(shù)據(jù)。

--查詢MaxCompute項目數(shù)據(jù)
SELECT * FROM <hologres_schema>.<mc_table>;
--查詢DLF數(shù)據(jù)
SELECT * FROM <hologres_schema>.<dlf_table>;

更多操作

關(guān)閉自動加載

  • 語法

    ---- 關(guān)閉自動加載
    ALTER DATABASE <database name> SET hg_experimental_enable_auto_load_foreign_table = off;
    說明

    關(guān)閉自動加載后,系統(tǒng)將停止自動同步外部數(shù)據(jù)源的元數(shù)據(jù)和創(chuàng)建新的外部表。您僅可在Hologres查看已經(jīng)加載的外部表和數(shù)據(jù)。如需增加更多外部表,需要手動執(zhí)行import命令,詳情請參見 IMPORT FOREIGN SCHEMA

  • 參數(shù)說明

    database name:Hologres數(shù)據(jù)庫名稱。

查看已開啟自動加載的數(shù)據(jù)源

-- 2.2版本以前,查看已設置的MaxCompute數(shù)據(jù)源
SHOW hg_experimental_default_odps_project_list;

-- 2.2版本以后,查看已設置的MaxCompute和DLF數(shù)據(jù)源
SHOW hg_experimental_auto_load_foreign_schema_mapping;

設置巡檢周期

在配置指定數(shù)據(jù)源進行全量加載后,若數(shù)據(jù)源中新增了表,可以通過以下時間參數(shù)進行周期性巡檢。當超過設置的巡檢時間后,系統(tǒng)在查詢對應外部表時會自動加載新增的表為Hologres外部表,實現(xiàn)增量外部表加載。默認間隔時間為30分鐘,即30分鐘內(nèi)有新增表,在30分鐘之后查詢發(fā)起時,會自動將新增的表加載為Hologres外部表。

  • 語法

    --設置指定Hologres數(shù)據(jù)庫的巡檢周期為600 s
    ALTER DATABASE <database name> SET hg_experimental_load_all_foreign_table_interval_time = 600;
  • 參數(shù)說明

    database name:Hologres數(shù)據(jù)庫名稱。

說明

建議巡檢周期不要小于600 s(即10分鐘)。

刪除已加載的外部表。

如果不再需要加速查詢外部表數(shù)據(jù),執(zhí)行DROP語句刪除外部表即可,詳情請參見DROP FOREIGN TABLE

使用示例

示例1:外部表按需加載

說明

本文以MaxCompute數(shù)據(jù)源為例,分別演示兩層模型和三層模型項目數(shù)據(jù)自動加載,示例詳情如下:

  • 兩層模型:項目名稱為mc_project,表名稱為mc_table

  • 三層模型:項目名稱為mc_3_layer_project,Schema名稱為mc_schema,表名稱為mc_table

  • 兩層模型

    1. 開啟自動加載。

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    2. 配置映射關(guān)系。

      ---V2.2.1及以上版本
      ALTER DATABASE holo_demo SET hg_experimental_auto_load_foreign_schema_mapping = 'hologres_schema:odps_server.mc_project';
      ---V2.2.1以下版本
      ALTER DATABASE holo_demo SET hg_experimental_default_odps_project_list='mc_project';
    3. 查詢外部表。

      SELECT * FROM hologres_schema.mc_table;
  • 三層模型

    1. 開啟自動加載。

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    2. 配置映射關(guān)系。

      ALTER DATABASE holo_demo SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema_3layer:odps_server.mc_3_layer_project.mc_schema';
    3. 查詢外部表。

      SELECT * FROM holo_schema_3layer.mc_table;

示例2:外部表全量自動加載

以DLF數(shù)據(jù)源為例,可以通過綁定DLF Default Catalog或自定義Catalog來自動加載DLF外部表。

  • DLF Default Catalog

    為DLF Default Catalog下dlf_db數(shù)據(jù)庫設置自動加載,設置后會將該數(shù)據(jù)庫中的全部表自動創(chuàng)建為Hologres外部表。同時系統(tǒng)會根據(jù)hg_experimental_load_all_foreign_table_interval_time配置的周期性巡檢時間,自動周期性加載這個數(shù)據(jù)庫中新增的表。

    1. 創(chuàng)建外部服務dlf_server并配置Endpoint信息,詳情請參見OSS數(shù)據(jù)湖加速

      --創(chuàng)建server
      CREATE SERVER IF NOT EXISTS dlf_server FOREIGN data wrapper dlf_fdw options (
          dlf_endpoint 'dlf-share.cn-beijing.aliyuncs.com',
          oss_endpoint 'oss-cn-beijing-internal.aliyuncs.com'
      );
    2. 創(chuàng)建用戶映射。

      Auto Load需要通過CREATE USER MAPPING命令指定訪問DLF和OSS的AccessKey ID和AccessKey Secret,詳情請參見OSS數(shù)據(jù)湖加速

      CREATE USER MAPPING FOR <賬號uid> server <server_name> options
      (
          dlf_access_id 'accessid', 
          dlf_access_key 'accesskey',
          oss_access_id 'accessid', 
          oss_access_key 'accesskey'
      );
    3. 開啟自動加載。

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    4. 設置映射關(guān)系及加載模式。

      SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema:dlf_server.dlf_db';
      SET hg_experimental_load_foreign_table_mode = 'period'; 
      SET hg_experimental_load_all_foreign_table_interval_time = 10;
    5. 查詢外部表數(shù)據(jù)。

      SELECT * FROM holo_schema.dlf_table;
  • DLF自定義Catalog

    1. 創(chuàng)建外部Server并配置Endpoint信息,詳情請參見OSS數(shù)據(jù)湖加速

      CREATE SERVER IF NOT EXISTS DLF_server FOREIGN data wrapper dlf_fdw options (
          dlf_endpoint 'dlf-share.cn-beijing.aliyuncs.com',
          oss_endpoint 'oss-cn-beijing-internal.aliyuncs.com'
      );
    2. 創(chuàng)建用戶映射。

      Auto Load需要通過CREATE USER MAPPING命令指定訪問DLF和OSS的AccessKey ID和AccessKey Secret,詳情請參見OSS數(shù)據(jù)湖加速

      CREATE USER mapping FOR <賬號uid> server <server_name> options
      (
          dlf_access_id 'accessid', 
          dlf_access_key 'accesskey',
          oss_access_id 'accessid', 
          oss_access_key 'accesskey'
      );
    3. 開啟自動加載。

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    4. 配置映射關(guān)系、加載模式以及巡檢周期。

      --配置映射關(guān)系
      SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema:DLF_server.dlf_catalog.dlf_db';
      --加載模式為外部表全量加載
      SET hg_experimental_load_foreign_table_mode = 'period'; 
      --巡檢周期為600 s
      SET hg_experimental_load_all_foreign_table_interval_time = 600;
    5. 查詢外部表數(shù)據(jù)。

      SELECT * FROM holo_schema.dlf_table;