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

OSS數據湖加速

基于阿里云數據湖構建(Data Lake Formation,DLF)和對象存儲(Object Storage Service,OSS)推出的Hologres數據湖加速服務,提供了靈活的數據訪問和分析能力以及高效的數據處理能力,顯著加快了對OSS數據湖的查詢和分析過程。本文將為您介紹在Hologres中如何通過DLF讀寫OSS數據。

前提條件

  • 您已開通DLF數據湖構建,詳情請參見快速入門。支持開通DLF的地域請參見已開通的地域和訪問域名

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

  • 您已開通OSS并準備好數據,詳情請參見開通OSS服務

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

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

注意事項

  • Hologres數據導出至OSS時僅支持執行INSERT INTO命令,不支持執行INSERT ON CONFLICTUPDATEDELETE命令。

  • 僅Hologres V1.3及以上版本支持回寫數據至OSS,且僅支持ORC、Parquet、CSV、SequenceFile格式文件。

  • Hologres暫不支持從引擎側自動創建OSS外部表,如需使用INSERT INTO命令回寫數據至OSS,請在DLF中提前創建好對應的外部表,如需導出數據至分區表,請提前創建好對應的分區。

  • 只讀從實例暫不支持開啟數據湖加速能力。

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

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

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

  • 不支持對外表執行UPDATEDELETETRUNCATE等命令。

使用說明

環境配置

  1. 在Hologres實例中開啟DLF_FDW后臺配置。

    前往Hologres管控臺實例列表實例詳情頁,單擊目標實例操作列的數據湖加速并確認,后臺將自動配置DLF_FDW并重啟實例,重啟完成即可使用該服務。

    說明

    Hologres控制臺自助開啟DLF_FDW后臺配置功能陸續開放中,如果您暫時看不到數據湖加速按鈕,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

    開啟DLF_FDW后默認使用當前系統資源(目前規格是1Core 4GB),無需額外購買資源。

  2. 創建Extension。

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

    CREATE EXTENSION IF NOT EXISTS dlf_fdw;
  3. 創建外部服務器。

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

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

      --查看現有server(其中meta_warehouse_server,odps_server是系統內置server,不可以修改和刪除)
      SELECT * FROM pg_foreign_server;
      
      --刪除現有server
      DROP SERVER <server_name> CASCADE;
      
      --創建server
      CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
          dlf_region '<region id>',
          dlf_endpoint 'dlf-share.<region id>.aliyuncs.com',
          oss_endpoint 'oss-<region id>-internal.aliyuncs.com'
      );
    • 使用DLF自定義數據目錄。

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

      --刪除現有 server
      DROP SERVER <server_name> CASCADE;
      
      --創建 server
      CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
          dlf_region '<region id>',
          dlf_endpoint 'dlf-share.<region id>.aliyuncs.com',
          oss_endpoint 'oss-<region id>-internal.aliyuncs.com',
          [dlf_catalog 'dlf_catalog_name']                     -- 添加自定義Catalog參數
      );
      重要

      如果您使用DLF默認數據目錄,請勿定義dlf_catalog參數,僅自定義數據目錄支持使用dlf_catalog參數進行聲明。使用DLF默認數據目錄請參見使用DLF默認數據目錄和原生OSS存儲創建Server

    • 使用OSS-HDFS作為數據湖存儲。

      • 確定OSS-HDFS Endpoint(地域節點)

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

        image

      • 創建外部Server并配置Endpoint信息

        確認Bucket域名后即可在Hologres中配置DLF_FDW OSS_Endpoint選項,示例語法如下。

        CREATE EXTENSION IF NOT EXISTS dlf_fdw;
        
        CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
            dlf_region '<region id>',
            dlf_endpoint 'dlf-share.<region id>.aliyuncs.com',
            oss_endpoint '<bucket_name>.<region id>.oss-dls.aliyuncs.com' -- OSS-HDFS Bucket Endpoint 域名節點
        );
      • 參數說明。

        參數

        說明

        示例

        server_name

        自定義的server名稱。

        dlf_server

        dlf_region

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

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

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

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

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

        • 華北3(張家口):cn-zhangjiakou

        • 新加坡:ap-southeast-1

        • 德國(法蘭克福):eu-central-1

        • 美國(弗吉尼亞):us-east-1

        • 印度尼西亞(雅加達):ap-southeast-5

        cn-hangzhou

        dlf_endpoint

        推薦使用DLF的對內服務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

        • 華北3(張家口):dlf-share.cn-zhangjiakou.aliyuncs.com

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

        • 德國(法蘭克福):dlf-share.eu-central-1.aliyuncs.com

        • 美國(弗吉尼亞):dlf-share.us-east-1.aliyuncs.com

        • 印度尼西亞(雅加達):dlf-share.ap-southeast-5.aliyuncs.com

        dlf-share.cn-shanghai.aliyuncs.com

        oss_endpoint

        • 原生OSS存儲推薦使用OSS的內網Endpoint,以獲得更好的訪問性能。

        • OSS-HDFS目前僅支持內網訪問,域名獲取方式詳見獲取OSS-HDFS服務域名

        • OSS

          oss-cn-shanghai-internal.aliyuncs.com
        • OSS-HDFS

          cn-hangzhou.oss-dls.aliyuncs.com

        dlf_catalog

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

        dlf_catalog

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

    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 <server_name> OPTIONS 
    (
        dlf_access_id 'accessid', 
        dlf_access_key 'accesskey',
        oss_access_id 'accessid', 
        oss_access_key 'accesskey'
    );

    使用示例:

    --為當前用戶創建用戶映射
    CREATE USER MAPPING FOR current_user SERVER <server_name> 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 <server_name> OPTIONS
    (
        dlf_access_id 'LIlY5txxx', 
        dlf_access_key 'KsjkXKyyy',
        oss_access_id 'LIlY5txxx', 
        oss_access_key 'KsjkXKyyy'
    );
    
    --刪除用戶映射
    DROP USER MAPPING FOR current_user SERVER <server_name>;
    DROP USER MAPPING FOR "p4_123xxx" SERVER <server_name>;

讀取OSS湖數據

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

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

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

    說明

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

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

    • 語法示例

      -- 方式一
      CREATE FOREIGN TABLE [ IF NOT EXISTS ] oss_table_name ( [
      { column_name data_type }
        [, ... ]
        ] )
      SERVER <server_name>
      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 <server_name>
        OPTIONS
        (
          schema_name 'dlfpro',
          table_name 'dlf_oss_test'
        );
        
        -- 方式二
        IMPORT FOREIGN SCHEMA dlfpro LIMIT TO
        (
          dlf_oss_test
        )
        FROM SERVER <server_name> INTO public options (if_table_exist 'update');
      • 批量創建。

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

        • 整庫導入。

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

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

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

    • 非分區表

      SELECT * FROM dlf_oss_test;
    • 分區表

      SELECT * FROM partition_table where dt = '2013';

下一步

  • 若您需要將OSS數據導入Hologres內部表直接查詢,以獲得更好的性能體驗,請參見使用SQL從數據湖導入

  • 若您要將Hologres內部表數據回寫至OSS數據湖,并使用外部引擎查詢,請參見導出至數據湖

常見問題

創建DLF外部表時,提示報錯ERROR: babysitter not ready,req:name:"HiveAccess"

  • 問題原因。

    未添加后臺配置。

  • 解決方法。

    請您在管理控制臺的實例列表頁單擊數據湖加速以開啟后臺配置。

示例教程

數據湖加速查詢