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

外部表自動(dòng)加載(Auto Load)

更新時(shí)間:

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

應(yīng)用場(chǎng)景

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

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

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

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

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

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

自動(dòng)加載

功能簡(jiǎn)介

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

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

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

    • 外部表自動(dòng)加載新增hg_experimental_load_foreign_table_mode = ['query' | 'period']來(lái)控制外部表自動(dòng)加載的模式。

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

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

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

      set hg_experimental_enable_auto_load_check_schema_evolution = on;
      說(shuō)明

      外部表自動(dòng)加載暫不支持OSS外部表的Schema Evolution。

    • 外部表自動(dòng)加載支持通過DLF元數(shù)據(jù)自動(dòng)加載,來(lái)加速查詢存儲(chǔ)于OSS的數(shù)據(jù),詳情請(qǐng)參見OSS數(shù)據(jù)湖加速

使用限制

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

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

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

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

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

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

  • 外部表全量自動(dòng)加載場(chǎng)景下:

    • 不建議設(shè)置自動(dòng)加載時(shí)間小于5分鐘。

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

操作步驟

開啟自動(dòng)加載

  • 語(yǔ)法

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

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

(可選)設(shè)置自動(dòng)加載模式

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

  • 語(yǔ)法

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

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

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

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

配置映射關(guān)系

  • 語(yǔ)法

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

      • Hologres V2.2.1及以上版本

        --MaxCompute項(xiàng)目為三層模型
        ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>.<mc_schema>, [...]';
        --MaxCompute項(xiàng)目為兩層模型
        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ù)說(shuō)明

    參數(shù)名稱

    說(shuō)明

    database

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

    hologres_schema

    Hologres Schema名稱。

    mc_project

    需要自動(dòng)加載的MaxCompute項(xiàng)目名稱。您可以登錄MaxCompute控制臺(tái),在工作區(qū) > 項(xiàng)目管理頁(yè)面獲取MaxCompute項(xiàng)目名稱。

    odps_foreign_server

    訪問MaxCompute項(xiàng)目使用的server,固定為odps_server

    odps_project_name

    odps_project_name為MaxCompute的項(xiàng)目名稱,支持設(shè)置多個(gè)項(xiàng)目,中間使用逗號(hào)隔開即可。

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

    說(shuō)明

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

    mc_schema

    MaxCompute的Schema名稱。

    說(shuō)明

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

    dlf_foreign_server

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

    SELECT * FROM pg_foreign_server;

    dlf_catalog

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

    dlf_database

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

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

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

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

更多操作

關(guān)閉自動(dòng)加載

  • 語(yǔ)法

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

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

  • 參數(shù)說(shuō)明

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

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

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

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

設(shè)置巡檢周期

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

  • 語(yǔ)法

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

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

說(shuō)明

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

刪除已加載的外部表。

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

使用示例

示例1:外部表按需加載

說(shuō)明

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

  • 兩層模型:項(xiàng)目名稱為mc_project,表名稱為mc_table

  • 三層模型:項(xiàng)目名稱為mc_3_layer_project,Schema名稱為mc_schema,表名稱為mc_table

  • 兩層模型

    1. 開啟自動(dòng)加載。

      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. 開啟自動(dòng)加載。

      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:外部表全量自動(dòng)加載

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

  • DLF Default Catalog

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

    1. 創(chuàng)建外部服務(wù)dlf_server并配置Endpoint信息,詳情請(qǐng)參見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,詳情請(qǐng)參見OSS數(shù)據(jù)湖加速

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

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    4. 設(shè)置映射關(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信息,詳情請(qǐng)參見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,詳情請(qǐng)參見OSS數(shù)據(jù)湖加速

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

      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;