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

共享集群(OSS數據湖加速)

本文將為您介紹在Hologres中如何通過共享集群讀OSS數據。

背景信息

共享集群(OSS數據湖加速)是針對OSS數據湖設計的Serverless的在線查詢加速服務,基于Hologres存儲計算分離的云原生架構,以共享集群資源的形式,加速分析存儲在OSS中的湖數據,按需使用,按掃描量付費。對外提供兼容PostgreSQL的查詢接口,無需數據移動,無需集群運維,給湖數據分析提供穩定、快速、低成本的查詢服務,滿足湖倉融合、按需使用、實時分析的訴求。

功能介紹

OSS數據湖加速(共享集群)的實例在資源上是共享的,默認開啟湖加速能力,您購買實例后,請直接創建DLF Extension,導入外部表,即可開始查詢豐富的湖數據,具體支持的功能如下:

  • Hologres從 V1.1版本開始支持從OSS讀取ORC、Parquet、CSV、SequenceFile格式文件;從V1.3版本開始支持從OSS讀取HUDI、Delta格式文件,支持寫入ORC、Parquet、CSV、SequenceFile格式文件至OSS。請前往Hologres管控臺實例詳情頁查看當前實例版本,如果您的實例是V1.3以下版本,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。

  • Hologres從 V1.3.25 版本開始支持使用DLF數據目錄(Multi-Catalog)做元數據隔離,方便您在測試環境、開發環境、跨部門集群之間做元數據隔離,以保障業務安全。DLF數據目錄詳情請參見數據目錄。

  • Hologres從V1.3.26版本開始支持讀寫存儲于OSS-HDFS上的數據。進一步擴展了數據湖加速的服務能力和邊界,使Hologres可以與Hadoop生態計算引擎無縫集成,加速讀寫存儲于HDFS上的數據,大幅提升Hadoop生態數據實時分析的效率,更好地滿足大數據和AI等領域的數據湖聯邦、實時分析訴求。

  • Hologres從V2.1.6版本開始支持讀取Apache Paimon湖格式。Apache Paimon是一種流批統一的湖存儲格式,支持高吞吐的寫入和低延遲的查詢,詳情請參見Apache Paimon。

前提條件

  • 您已開通DLF數據湖構建,詳情請參見快速入門。共享集群支持的地域有:華北2(北京)、華東2(上海)、華東1(杭州)、華南1(深圳)和新加坡。

  • (可選)如果您需要使用DLF自定義數據目錄功能,請先在DLF中新建數據目錄,詳情請參見新建數據目錄。

  • 已開通OSS并準備好數據。

  • 您已進行OSS授權操作,通過外部表方式訪問OSS數據,需要訪問的賬號有OSS的相關訪問權限,否則即使創建外表成功了,也無法查詢數據,OSS授權請參見Bucket Policy。

  • (可選)如果您需要使用OSS-HDFS功能,請開通OSS-HDFS服務,詳情請參見開通OSS-HDFS服務。

注意事項

  • 共享集群僅支持使用DLF_FDW外表讀取OSS數據,不支持寫入數據。

  • 不支持讀寫使用了OSS加速器的數據湖數據,OSS加速器詳情請參見使用OSS加速器

  • IMPORT FOREIGN SCHEMA語句支持導入存儲于OSS上的分區表,當前Hologres支持查詢最多分區數為512個,請添加分區過濾條件,使查詢時一次查詢不超過512個分區。

  • 湖數據查詢的原理是在運行時將外部表數據的特定查詢分區加載到Hologres的內存和緩存中完成計算,為不影響查詢體驗,Hologres一次查詢支持的數據量不能超過200 GB(經分區過濾后命中的數據量)。

數據類型映射

Hologres與數據湖數據類型映射關系請參見數據類型匯總。

使用說明

配置環境

  1. 創建Extension。

    說明

    從V2.1.6版本開始,Hologres在創建實例的時候默認創建dlf_fdw,您無需再手動創建。V2.1.5及以下版本需要手動創建。

    在Hologres中由Superuser在DB中執行以下語句創建Extension,用于開啟通過DLF讀取OSS數據的功能。該操作針對整個DB生效,一個DB只需執行一次。

    CREATE EXTENSION IF NOT EXISTS dlf_fdw;
  2. 創建外部服務器(Server)。

    Hologres支持DLF數據目錄(Multi-Catalog)功能,如果您只有一個EMR集群,請使用DLF默認數據目錄即可;如果您有多個EMR集群,可以使用自定義數據目錄來控制Hologres實例連接到不同的EMR集群。同時,您也可以選擇原生OSS或者OSS-HDFS作為數據來源,具體配置如下:

    • 使用DLF默認數據目錄。

      創建Server用于Hologres連接DLF和OSS使用DLF默認數據目錄和原生OSS存儲創建Server,示例語法如下。

      --查看現有server
      
      SELECT * FROM pg_foreign_server;
      
      --刪除現有 server
      
      DROP server server_name cascade;
      
      --創建 server
      
      CREATE SERVER IF NOT EXISTS < servername > FOREIGN data wrapper dlf_fdw options (
          dlf_region 'cn-<region>',
          dlf_endpoint 'dlf-share.cn-<region>.aliyuncs.com',
          oss_endpoint 'oss-cn-<region>-internal.aliyuncs.com'
      );
    • 使用DLF自定義數據目錄。

      創建Server默認連接到DLF的默認數據目錄,如您需要訪問自定義數據目錄,需要在創建Server時指定DLF數據目錄參數,示例語法如下。

      --刪除現有server
      
      DROP server server_name cascade;
      
      --創建server
      
      CREATE SERVER IF NOT EXISTS < servername > FOREIGN data wrapper dlf_fdw options (
          dlf_region 'cn-<region>',
          dlf_endpoint 'dlf-share.cn-<region>.aliyuncs.com',
          oss_endpoint 'oss-cn-<region>-internal.aliyuncs.com',
          [dlf_catalog 'dlf_catalog_name'] -- 添加自定義Catalog參數
      );
    • 使用OSS-HDFS作為數據湖存儲。

      1. 確定OSS-HDFS Bucket域名。

        通過DLF_FDW訪問存儲在OSS-HDFS上數據,需要配置OSS-HDFS的服務域名,域名地址可以在OSS控制臺中,已開通OSS-HDFS服務的Bucket概覽頁獲取,詳情請參見獲取OSS-HDFS服務域名。oss域名

      2. 創建Foreign Server并配置Endpoint信息。

        確定OSS-HDFS Bucket域名后即可在Hologres中配置DLF_FDW oss_endpoint選項,示例語法如下。

        CREATE EXTENSION IF NOT EXISTS dlf_fdw;
        
        CREATE SERVER IF NOT EXISTS < servername > FOREIGN data wrapper dlf_fdw options (
            dlf_region 'cn-<region>',
            dlf_endpoint 'dlf-share.cn-<region>.aliyuncs.com',
            oss_endpoint 'oss-cn-<region>.oss-dls.aliyuncs.com'  -- OSS-HDFS Bucket 域名
        );
    • 參數說明。

      參數

      說明

      示例

      server_name

      自定義的server名稱。

      oss_server

      dlf_region

      連接DLF所在的地域,請您根據地域進行選擇,可選項如下。

      • 華北2(北京):cn-beijing。

      • 華東1(杭州):cn-hangzhou。

      • 華東2(上海):cn-shanghai

      • 華南1(深圳):cn-shenzhen。

      • 新加坡:ap-southeast-1。

      cn-hangzhou

      dlf_endpoint

      推薦使用DLF的對內服務Endpoint,可以獲得更好的訪問性能,如您需要跨Region 訪問DLF元數據及OSS數據,則需使用公網Endpoint,詳情請參見已開通的地域和訪問域名。請您根據地域進行選擇,可選項如下。

      • 華北2(北京):dlf-share.cn-beijing.aliyuncs.com。

      • 華東1(杭州):dlf-share.cn-hangzhou.aliyuncs.com

      • 華東2(上海):dlf-share.cn-shanghai.aliyuncs.com

      • 華南1(深圳):dlf-share.cn-shenzhen.aliyuncs.com。

      • 新加坡:dlf-share.ap-southeast-1.aliyuncs.com。

      dlf-share.cn-shanghai.aliyuncs.com

      oss_endpoint

      • 原生OSS存儲推薦使用OSS的內網Endpoint,以獲得更好的訪問性能,如您需要同Hologres、DLF跨Region交互,請需使用公網Endpoint,詳情請參見OSS訪問域名使用規則。

      • OSS-HDFS Bucket域名。

        OSS-HDFS目前僅支持內網訪問,即默認不支持跨區域訪問。,域名獲取方式詳情請參見獲取OSS-HDFS服務域名

        。

      • oss-cn-shanghai-internal.aliyuncs.com
      • cn-hangzhou.oss-dls.aliyuncs.com

      dlf_catalog

      在DLF中新建的數據目錄,詳情請參見新建數據目錄。

      dlf_catalog

  3. (可選)創建用戶映射。

    Hologres支持通過CREATE USER MAPPING命令指定其他用戶身份來訪問DLF和OSS,如:foreign server的Owner可以通過CREATE USER MAPPING指定RAM用戶123xxx來訪問OSS外部數據。

    查詢時請確保該賬號有對應外部數據的查詢權限。詳細原理請參見postgres create user mapping。

    CREATE USER MAPPING FOR < 賬號uid > SERVER hm_dlf_server options (
        dlf_access_id '<accesskey id>',
        dlf_access_key 'accesskey',
        oss_access_id 'accessid',
        oss_access_key 'accesskey'
    );

    當前阿里云賬號的AccessKey ID和AccessKey Secret,獲取方式請參見創建訪問密鑰。

    使用示例:

    --為當前用戶創建用戶映射
    CREATE USER MAPPING FOR CURRENT_USER SERVER hm_dlf_server options (
        dlf_access_id 'LTAI5txxx',
        dlf_access_key 'y8LUUyyy',
        oss_access_id 'LTAI5txxx',
        oss_access_key 'y8LUUyyy'
    );
    
    --為RAM用戶123xxx創建用戶映射
    CREATE USER MAPPING FOR "p4_123xxx" SERVER hm_dlf_server options (
        dlf_access_id 'LIlY5txxx',
        dlf_access_key 'KsjkXKyyy',
        oss_access_id 'LIlY5txxx',
        oss_access_key 'KsjkXKyyy'
    );
    
    --刪除用戶映射
    DROP USER MAPPING FOR CURRENT_USER SERVER hm_dlf_server options;
    
    DROP USER MAPPING FOR "p4_123xxx" SERVER hm_dlf_server options;

讀取OSS湖數據

以DLF數據源為例,您需要在DLF中準備元數據表,并保證該表中已抽取數據,詳情請參見元數據管理。在Hologres中以外部表方式通過DLF訪問OSS的數據操作步驟如下:

  1. 在Hologres實例中創建外部表。

    Server創建完成后,您可以在Hologres中使用CREATE FOREIGN TABLE創建外部表或使用IMPORT FOREIGN SCHEMA語法單獨或者批量創建外部表,用于讀取DLF抽取的OSS數據。

    說明

    如果存在OSS外部表和Hologres內部表同名的表,IMPORT FOREIGN SCHEMA語法會跳過該外部表的創建,請使用CREATE FOREIGN TABLE語法創建一個非重名表。

    Hologres支持讀取OSS中的分區表,支持作為分區鍵的數據類型有:TEXT、VARCHAR和INT。CREATE FOREIGN TABLE方式因只做字段映射,不實際存儲數據,將分區字段作為普通字段來創建即可;IMPORT FOREIGN SCHEMA方式無需關心表字段,會自動處理表字段映射。

    • 語法示例

      -- 方式一:
      CREATE FOREIGN TABLE [ IF NOT EXISTS ] ext_table_name ( [
      { column_name data_type }
        [, ... ]
        ] )
      SERVER dlf_server
      options
      (
        schema_name '<dlf_database_name>',
        table_name '<dlf_table_name>'
      );
      
      -- 方式二:
      IMPORT FOREIGN SCHEMA schema_name
          [ { limit to | except } ( table_name [, ...] ) ]
          from server server_name
          into local_schema
          [ options ( option 'value' [, ... ] ) ]
    • 參數說明

      參數

      說明

      schema_name

      DLF中創建的元數據庫名。

      table_name

      DLF中創建的元數據表名。

      server_name

      Hologres中創建的Server名。

      local_schema

      Hologres中的Schema名。

      options

      IMPORT FOREIGN SCHEMA中的option參數取值,詳情請參見IMPORT FOREIGN SCHEMA

    • 使用示例。

      • 單獨創建。

        創建一張外部表映射DLF元數據庫dlfpro中元數據表dlf_oss_test的數據,該表位于Hologres中的public Schema,并且檢驗是否存在該外部表,若存在,則對已有表更新。

        -- 方式一
        CREATE FOREIGN TABLE dlf_oss_test_ext
        (
          id text,
          pt text
        )
        SERVER dlf_server
        options
        (
          schema_name 'dlfpro',
          table_name 'dlf_oss_test'
        );
        
        
        -- 方式二:
        IMPORT FOREIGN SCHEMA dlfpro LIMIT TO
        (
          dlf_oss_test
        )
        FROM SERVER dlf_server INTO public options (if_table_exist 'update');
      • 批量創建。

        將DLF元數據庫dlfpro中所有的表都映射至Hologres的public Schema,將會在Hologres中批量創建同名外部表。

        • 整庫導入。

          IMPORT FOREIGN SCHEMA dlfpro
          FROM SERVER dlf_server INTO public options (if_table_exist 'update');
        • 多表導入。

          IMPORT FOREIGN SCHEMA dlfpro
          (
            table1,
            table2,
            tablen
          )
          FROM SERVER dlf_server INTO public options (if_table_exist 'update');
  2. 數據查詢。

    創建外部表成功后,在HoloWeb可以看到該外部表,可以直接查詢外部表讀取OSS中的數據。

    • 非分區表

      SELECT * FROM dlf_oss_test;
    • 分區表

      SELECT * FROM partition_table where dt = '2013';

相關文檔

如果您想了解基于Paimon湖存儲格式的Hologres實踐方案,請參見基于Paimon的Hologres Serverless數據湖解決方案。