Tous les produits
Search
Centre de documentation

Hologres:OSS data lake acceleration

Dernière mise à jour :Aug 20, 2026

Hologres accélère les requêtes sur votre data lake OSS en s'appuyant sur Alibaba Cloud Data Lake Formation (DLF) et Object Storage Service (OSS), offrant ainsi un accès flexible aux données et un traitement efficace. Cette rubrique explique comment utiliser DLF 1.0 pour lire et écrire des données dans OSS depuis Hologres.

Prérequis

Notes d'utilisation

  • Lorsque vous exportez des données depuis Hologres vers OSS, seule la commande INSERT INTO est prise en charge. Les commandes INSERT ON CONFLICT, UPDATE et DELETE ne sont pas prises en charge.

  • L'écriture de données dans OSS n'est possible qu'avec Hologres V1.3 ou version ultérieure. Cette fonctionnalité prend uniquement en charge les formats ORC, Parquet, CSV et SequenceFile.

  • L'accélération du data lake n'est pas prise en charge sur les instances secondaires en lecture seule.

  • L'instruction IMPORT FOREIGN SCHEMA permet d'importer des tables partitionnées stockées dans OSS. Hologres peut interroger au maximum 512 partitions simultanément. Ajoutez des filtres de partition pour veiller à ce qu'une requête unique ne dépasse pas cette limite.

  • Lorsque vous interrogez des données dans un data lake, les partitions spécifiées dans la requête sont chargées depuis la table externe vers la mémoire et le cache de Hologres pour le calcul. Afin de garantir une expérience fluide, le volume de données accédé par les filtres de partition lors d'une seule requête ne doit pas excéder 200 Go.

  • Les commandes UPDATE, DELETE et TRUNCATE ne sont pas prises en charge pour les tables externes.

  • La nouvelle version de DLF ne prend pas en charge l'accélération du data lake OSS. Cette fonctionnalité est disponible uniquement dans DLF 1.0 (DLF-Legacy).

Procédure

Configuration de l'environnement

  1. Activez la configuration backend DLF_FDW pour votre instance Hologres.

    Accédez à la console Hologres. Sur la page Instances ou Instance Details, repérez l'instance cible et cliquez sur Actions dans la colonne Lake Acceleration. Après confirmation de l'opération, le système configure automatiquement DLF_FDW et redémarre l'instance. Le service est disponible une fois l'instance redémarrée.

    Remarque

    La fonctionnalité en libre-service permettant d'activer la configuration backend DLF_FDW dans la console Hologres est en cours de déploiement. Si vous ne voyez pas le bouton Lake Acceleration, reportez-vous à la section Common errors when preparing for an upgrade ou rejoignez le groupe DingTalk Hologres pour fournir vos commentaires. Pour plus d'informations, consultez la section How do I get more online support?.

    Une fois DLF_FDW activé, la fonctionnalité utilise les ressources système existantes (actuellement 1 cœur et 4 Go de mémoire) par défaut. Aucun achat de ressources supplémentaire n'est requis.

  2. Créez une extension.

    Un superutilisateur doit exécuter l'instruction suivante une fois par base de données pour créer l'extension. Cela vous permettra de lire les données depuis OSS en utilisant DLF 1.0.

    CREATE EXTENSION IF NOT EXISTS dlf_fdw;
  3. Créez un serveur externe.

    Important

    Vous devez utiliser un compte superutilisateur pour créer un serveur externe afin d'éviter les problèmes d'autorisations.

    Hologres prend en charge la fonctionnalité Multi-Catalog de DLF 1.0. Si vous ne disposez que d'un seul cluster EMR, vous pouvez utiliser le catalogue DLF 1.0 par défaut. Si vous avez plusieurs clusters EMR, vous pouvez utiliser des catalogues de données personnalisés pour lier votre instance Hologres à différents clusters EMR. Vous pouvez également choisir OSS natif ou OSS-HDFS comme source de données. Les sections suivantes détaillent les configurations.

    • Utilisez le catalogue par défaut de DLF 1.0 et le stockage OSS natif pour créer un serveur. Syntaxe d'exemple :-- Afficher les serveurs existants. meta_warehouse_server et odps_server sont des serveurs intégrés qui ne peuvent pas être modifiés ni supprimés.

      SELECT * FROM pg_foreign_server;

      -- Supprimer un serveur existant.

      DROP SERVER SERVER_NAME CASCADE;

      -- Créer un serveur.

      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'

      );

    • Utilisez OSS-HDFS comme stockage de data lake.

      • Déterminez le point de terminaison OSS-HDFS.

        Dans la console OSS, vous trouverez le point de terminaison sur la page de présentation du bucket pour lequel OSS-HDFS est activé.

        Dans le tableau des ports d'accès, repérez le point de terminaison dans la colonne Bucket domain correspondant à la ligne HDFS service. Le point de terminaison suit le format <BucketName>.cn-hangzhou.oss-dls.aliyuncs.com.

      • Créez un serveur externe et configurez son point de terminaison.

        Une fois le nom de domaine du bucket confirmé, vous pouvez configurer l'option DLF_FDW OSS_Endpoint dans Hologres. La syntaxe d'exemple est la suivante.

        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' -- The endpoint of the OSS-HDFS bucket.
        );
      • Paramètres

        Parameter

        Description

        Example

        SERVER_NAME

        Le nom personnalisé du serveur.

        dlf_server

        dlf_region

        La région où se trouve DLF 1.0.

        • Chine (Pékin) : cn-beijing.

        • Chine (Hangzhou) : cn-hangzhou.

        • Chine (Shanghai) : cn-shanghai.

        • Chine (Shenzhen) : cn-shenzhen.

        • Chine (Zhangjiakou) : cn-zhangjiakou.

        • Singapour : ap-southeast-1.

        • Allemagne (Francfort) : eu-central-1.

        • États-Unis (Virginie) : us-east-1.

        • Indonésie (Jakarta) : ap-southeast-5.

        cn-hangzhou

        dlf_endpoint

        Nous vous recommandons d'utiliser le point de terminaison interne de DLF 1.0 pour de meilleures performances d'accès.

        • Chine (Pékin) : dlf-share.cn-beijing.aliyuncs.com.

        • Chine (Hangzhou) : dlf-share.cn-hangzhou.aliyuncs.com

        • Chine (Shanghai) : dlf-share.cn-shanghai.aliyuncs.com.

        • Chine (Shenzhen) : dlf-share.cn-shenzhen.aliyuncs.com.

        • Chine (Zhangjiakou) : dlf-share.cn-zhangjiakou.aliyuncs.com.

        • Singapour : dlf-share.ap-southeast-1.aliyuncs.com.

        • Allemagne (Francfort) : dlf-share.eu-central-1.aliyuncs.com.

        • États-Unis (Virginie) : dlf-share.us-east-1.aliyuncs.com.

        • Indonésie (Jakarta) : dlf-share.ap-southeast-5.aliyuncs.com.

        dlf-share.cn-shanghai.aliyuncs.com

        oss_endpoint

        • Pour le stockage OSS natif, nous vous recommandons d'utiliser le point de terminaison interne d'OSS pour de meilleures performances d'accès.

        • OSS-HDFS prend uniquement en charge l'accès via le réseau interne.

        • OSS

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

          cn-hangzhou.oss-dls.aliyuncs.com
  4. (Facultatif) Créez un mappage utilisateur.

    Hologres vous permet d'exécuter la commande CREATE USER MAPPING pour mapper un autre utilisateur afin d'accéder à DLF 1.0 et OSS. Par exemple, le propriétaire d'un serveur externe peut exécuter CREATE USER MAPPING pour spécifier qu'un utilisateur RAM avec l'UID 123xxx accède aux données externes dans OSS.

    Assurez-vous que le compte dispose des autorisations requises pour interroger les données externes correspondantes. Pour plus d'informations sur les principes sous-jacents, consultez la documentation postgres create user mapping.

    CREATE USER MAPPING FOR ACCOUNT_UID SERVER SERVER_NAME OPTIONS 
    (
        dlf_access_id 'YOUR_ACCESS_KEY', 
        dlf_access_key 'YOUR_ACCESS_SECRET',
        oss_access_id 'YOUR_ACCESS_KEY', 
        oss_access_key 'YOUR_ACCESS_SECRET'
    );

    Exemples :

    -- Create a user mapping for the current user.
    CREATE USER MAPPING FOR current_user SERVER SERVER_NAME OPTIONS
    (
        dlf_access_id 'YOUR_ACCESS_KEY', 
        dlf_access_key 'YOUR_ACCESS_SECRET',
        oss_access_id 'YOUR_ACCESS_KEY', 
        oss_access_key 'YOUR_ACCESS_SECRET'
    );
    
    -- Create a user mapping for the RAM user 123xxx.
    CREATE USER MAPPING FOR "p4_123xxx" SERVER SERVER_NAME OPTIONS
    (
        dlf_access_id 'YOUR_ACCESS_KEY', 
        dlf_access_key 'YOUR_ACCESS_SECRET',
        oss_access_id 'YOUR_ACCESS_KEY', 
        oss_access_key 'YOUR_ACCESS_SECRET'
    );
    
    -- Drop the user mappings.
    DROP USER MAPPING FOR current_user SERVER SERVER_NAME;
    DROP USER MAPPING FOR "p4_123xxx" SERVER SERVER_NAME;

Lecture des données depuis un data lake OSS

Prenons l'exemple d'une source de données DLF 1.0. Vous devez préparer une table de métadonnées dans DLF 1.0 et vous assurer que les données ont été renseignées dans cette table . Les étapes suivantes décrivent comment accéder aux données OSS via DLF 1.0 en utilisant une table externe dans Hologres :

  1. Créez une table externe dans votre instance Hologres.

    Une fois le serveur créé, vous pouvez utiliser l'instruction CREATE FOREIGN TABLE ou l'instruction IMPORT FOREIGN SCHEMA pour créer une ou plusieurs tables externes dans Hologres. Cela vous permet de lire les données OSS gérées par DLF 1.0.

    Remarque

    Si une table externe OSS porte le même nom qu'une table interne Hologres, IMPORT FOREIGN SCHEMA ignore la création de cette table externe. Dans ce cas, utilisez CREATE FOREIGN TABLE et spécifiez un nom de table unique.

    Hologres peut lire des tables partitionnées depuis OSS. Les colonnes de types TEXT, VARCHAR et INT sont prises en charge comme clés de partition. La méthode CREATE FOREIGN TABLE mappe uniquement les champs sans stocker les données, vous pouvez donc créer des champs de partition comme des champs ordinaires. La méthode IMPORT FOREIGN SCHEMA gère automatiquement le mappage des champs de table, vous n'avez donc pas besoin de gérer manuellement les champs de la table.

    • Syntaxe-- Méthode 1

      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'

      );

      -- Méthode 2

      IMPORT FOREIGN SCHEMA schema_name

      [ { limit to | except } ( table_name [, ...] ) ]

      from server SERVER_NAME

      into local_schema

      [ options ( option 'value' [, ... ] ) ]

    • Paramètres

      Parameter

      Description

      schema_name

      Le nom de la base de données de métadonnées créée dans DLF 1.0.

      table_name

      Le nom de la table de métadonnées créée dans DLF 1.0.

      SERVER_NAME

      Le nom du serveur créé dans Hologres.

      local_schema

      Le nom du schéma dans Hologres.

      options

      Options pour l'instruction IMPORT FOREIGN SCHEMA. Pour plus d'informations, consultez la section IMPORT FOREIGN SCHEMA.

    • Exemples

      • Créez une table unique.

        Créez une table externe pour mapper les données de la table de métadonnées dlf_oss_test dans la base de données de métadonnées DLF 1.0 dlfpro. La table se trouve dans le schéma public de Hologres. Si la table existe déjà, elle est mise à jour.

        -- Method 1
        CREATE FOREIGN TABLE dlf_oss_test_ext
        (
          id text,
          pt text
        )
        SERVER SERVER_NAME
        OPTIONS
        (
          schema_name 'dlfpro',
          table_name 'dlf_oss_test'
        );
        
        -- Method 2
        IMPORT FOREIGN SCHEMA dlfpro LIMIT TO
        (
          dlf_oss_test
        )
        FROM SERVER SERVER_NAME INTO public options (if_table_exist 'update');
      • Créez des tables en masse.

        Mappez toutes les tables de la base de données de métadonnées DLF 1.0 dlfpro vers le schéma public dans Hologres. Cela permet de créer des tables externes dans Hologres en masse avec les mêmes noms.

        • Importez une base de données entière.IMPORT FOREIGN SCHEMA dlfpro

          FROM SERVER SERVER_NAME INTO public options (if_table_exist 'update');

        • Importez plusieurs tables.IMPORT FOREIGN SCHEMA dlfpro

          (

          table1,

          table2,

          tablen

          )

          FROM SERVER SERVER_NAME INTO public options (if_table_exist 'update');

  2. Interrogez les données.

    Une fois la table externe créée, vous pouvez l'interroger directement pour lire les données depuis OSS.

    • Table non partitionnée

      SELECT * FROM dlf_oss_test;
    • Table partitionnée

      SELECT * FROM partition_table WHERE dt = '2013';

Étapes suivantes

FAQ

Pourquoi l'erreur ERROR: babysitter not ready,req:name:"HiveAccess" s'affiche-t-elle lors de la création d'une table externe DLF 1.0 ?

  • Cause

    La configuration backend n'a pas été ajoutée.

  • Solution

    Sur la page Instances de la console Hologres, cliquez sur Lake Acceleration pour activer la configuration backend.

Tutoriels

Accelerate data lake queries