Tous les produits
Search
Centre de documentation

Data Lake Formation:Accéder à DLF depuis Hologres

Dernière mise à jour :Sep 18, 2026

Hologres V3.2 et versions ultérieures permettent d'accéder aux données du catalogue Data Lake Formation (DLF) via Paimon REST. Une fois la connexion établie, vous pouvez interroger directement les tables Paimon depuis Hologres, utiliser le voyage dans le temps pour inspecter des snapshots historiques, lire des branches spécifiques et charger les données de manière incrémentielle dans des tables dynamiques.

Prérequis

Avant de commencer, vérifiez que :

Limitations

  • L'écriture dans les tables Paimon n'est pas prise en charge. Les opérations INSERT, UPDATE, DELETE et TRUNCATE sont indisponibles.

  • Les requêtes de voyage dans le temps, les requêtes par branche et la mise en miroir des données sont uniquement disponibles pour les tables Paimon mappées via une base de données externe, et non via un serveur distant.

  • Le voyage dans le temps n'est pas pris en charge sur les tables ayant subi une évolution de schéma ni sur les tables dynamiques.

  • La mise en miroir des données ne prend pas en charge les tables Paimon dotées de clés primaires.

  • La lecture depuis les partitions par défaut où la clé de partition est NULL ou vide n'est pas prise en charge.

  • La fonctionnalité d'accélération de lac de données OSS dans HoloWeb ne permet pas de créer visuellement un catalogue DLF.

  • La fonctionnalité d'accélération de lac de données ne peut pas être activée pour les instances secondaires en lecture seule.

Choisir un mode d'authentification

Hologres propose deux modes d'authentification pour accéder à un catalogue DLF :

Mode Cas d'utilisation
SLR (rôle lié au service) Mode par défaut. À utiliser pour accéder aux données sous votre identité Alibaba Cloud actuelle. Hologres gère automatiquement l'autorisation interservices via le transfert d'identité.
STS (Security Token Service) À utiliser pour un accès intercomptes ou lorsqu'un compte BASIC Hologres nécessite un accès à DLF. Nécessite un rôle RAM et un mappage utilisateur explicite.

Privilégiez le mode SLR, sauf si un accès intercomptes ou la prise en charge des comptes BASIC est requise.

Mapper un catalogue à l'aide d'une base de données externe

Mode SLR

Un rôle lié au service (SLR) est un rôle RAM qui autorise un service Alibaba Cloud à accéder à d'autres services en votre nom. Hologres crée et gère le SLR automatiquement ; aucune configuration manuelle du rôle n'est nécessaire. Consultez la rubrique Rôle lié au service.

  1. Connectez-vous à une instance Hologres et créez une base de données externe.

    Paramètre Obligatoire Description
    catalog_type Oui Toujours paimon pour les tables Paimon.
    metastore_type Oui Toujours dlf-rest lors de la connexion via DLF.
    dlf_catalog Oui Le nom de votre catalogue DLF.
    comment Non Description de la base de données externe.
    CREATE EXTERNAL DATABASE <ext_database_name> WITH
      catalog_type 'paimon'
      metastore_type 'dlf-rest'
      dlf_catalog '<dlf_catalog_name>'
      comment 'Catalog on dlf'
      ;
  2. Consultez les schémas et les tables de la base de données externe.

    -- List schemas in the external database
    SELECT * FROM hologres.hg_external_schemas('<ext_database_name>');
    
    -- List tables in a specific schema
    SELECT * FROM hologres.hg_external_tables('<ext_database_name>', '<ext_schema_name>');
  3. Interrogez les données.

    SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Mode STS

Le Security Token Service (STS) émet des informations d'identification temporaires avec des autorisations et des périodes de validité configurables. Utilisez ce mode lorsqu'un utilisateur RAM ou un compte BASIC d'un autre compte doit accéder aux données DLF via Hologres.

  1. Dans la console RAM, créez un rôle RAM et associez-lui l'autorisation AliyunDLFFullAccess ou AliyunDLFReadOnlyAccess. Consultez la rubrique Créer un rôle RAM et accorder des autorisations.

  2. Modifiez la politique de confiance du rôle RAM pour permettre à Hologres de l'assumer. Consultez la rubrique Modifier la politique de confiance d'un rôle RAM.

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "hologres.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }
  3. Dans la console Data Lake Formation, accordez au rôle RAM l'accès aux bases de données et aux tables concernées. Consultez la rubrique Gestion des autorisations.

  4. Dans Hologres, créez une base de données externe et référencez le rôle RAM.

    Paramètre Obligatoire Description
    catalog_type Oui Toujours paimon pour les tables Paimon.
    metastore_type Oui Toujours dlf-rest lors de la connexion via DLF.
    dlf_catalog Oui Le nom de votre catalogue DLF.
    rolearn Oui Nom de ressource Alibaba Cloud (ARN) du rôle RAM créé à l'étape 1. Format : acs:ram::<account-id>:role/<role-name>.
    comment Non Description de la base de données externe.
    CREATE EXTERNAL DATABASE <ext_database_name> WITH
      catalog_type 'paimon'
      metastore_type 'dlf-rest'
      dlf_catalog '<dlf_catalog_name>'
      rolearn 'acs:ram::106380604****:role/***-ramrole'
      comment 'Catalog on dlf'
      ;
  5. Créez un mappage utilisateur pour lier l'utilisateur RAM ou le compte BASIC au rôle RAM.

    Pour plus d'informations sur les mappages utilisateurs, consultez la documentation CREATE USER MAPPING . Pour créer un utilisateur RAM, consultez Create a RAM user . Pour créer un compte BASIC, consultez la rubrique Gestion des utilisateurs .
    CREATE USER MAPPING FOR "<RAM_user|BASIC_account>"
    EXTERNAL DATABASE <ext_database_name>
    OPTIONS
    (
       rolearn 'acs:ram::10638060***:role/***ramrole'
    );
  6. Connectez-vous en tant qu'utilisateur RAM via la console de gestion Hologres, ou connectez-vous à l'aide du compte BASIC, puis interrogez les données.

    SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Accélérer les requêtes grâce à la mise en miroir des tables de lac

Hologres V3.2 et versions ultérieures prennent en charge la mise en miroir des tables de lac, qui synchronise les métadonnées et les données d'une source de données externe vers Hologres, soit en quasi-temps réel, soit à intervalles planifiés. La mise en miroir prend en charge les tables complètes et des partitions spécifiques des tables partitionnées. Consultez la rubrique Mise en miroir des tables de lac.

Opérations sur les schémas externes

Créer un schéma externe

La création d'un schéma externe génère une base de données correspondante dans le catalogue DLF.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] <ext_database_name>.<ext_schema_name>;

Actualiser les métadonnées du schéma

REFRESH CACHE FOR EXTERNAL SCHEMA <ext_database_name>.<ext_schema_name> WITH (cache_level = 'metadata');

Supprimer un schéma externe

La suppression d'un schéma externe retire la base de données correspondante et toutes ses tables du catalogue DLF. Cette opération est irréversible.

DROP EXTERNAL SCHEMA [IF NOT EXISTS] <ext_database_name>.<ext_schema_name>;

Lister les tables d'un schéma

SELECT * FROM hologres.hg_external_tables('<ext_database_name>', '<ext_schema_name>');

Opérations sur les tables externes

Créer une table externe

-- Non-partitioned table
CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name>(
    id TEXT,
    created_at BIGINT,
    type TEXT,
    actor_id TEXT,
    actor_login TEXT,
    repo_id TEXT,
    repo_name TEXT,
    org TEXT,
    org_login TEXT,
    PRIMARY KEY(id)
) WITH (
  "changelog-producer"='input',
  "bucket"=6,
  "bucket-key"='id'
);

-- Partitioned table
CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name>(
    id TEXT,
    created_at BIGINT,
    type TEXT,
    actor_id TEXT,
    actor_login TEXT,
    repo_id TEXT,
    repo_name TEXT,
    org TEXT,
    org_login TEXT
)
LOGICAL PARTITION BY LIST(created_at)
WITH (
  "file_format" = 'orc',
  "bucket"=6,
  "bucket-key"='id'
);

Actualiser les métadonnées de la table

REFRESH CACHE FOR EXTERNAL TABLE <ext_db_name>.<ext_schema_name>.<ext_table_name> WITH (cache_level = 'metadata');

Supprimer une table externe

La suppression d'une table externe retire la table du catalogue DLF. Cette opération est irréversible.

DROP EXTERNAL TABLE IF EXISTS <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Collecter les statistiques de la table

Les commandes ANALYZE et AUTO ANALYZE collectent des statistiques de colonnes que l'optimiseur de requêtes utilise pour générer des plans de requête efficaces. Consultez la rubrique ANALYZE et AUTO ANALYZE.

-- Collect statistics for all columns
ANALYZE <ext_database_name>.<ext_schema_name>.<ext_table_name>;

-- Collect statistics for specific columns (higher sample rate — use for columns with conditional filters)
ANALYZE <ext_database_name>.<ext_schema_name>.<ext_table_name>(<colname>, <colname>);

-- Enable auto-analyze for the external database
ALTER EXTERNAL DATABASE <ext_database_name> WITH enable_auto_analyze 'true';

Requêtes de voyage dans le temps

Hologres V3.2 et versions ultérieures permettent d'interroger les snapshots historiques des tables Paimon. Les trois approches utilisent la syntaxe FOR ... AS OF :

-- Query by timestamp
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR TIMESTAMP AS OF '<timestamp>';

-- Query by version (version = snapshot ID for Paimon tables)
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR VERSION AS OF '<version>';

-- Query by tag
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR TAG AS OF '<tag>';

Pour identifier les snapshots ou tags disponibles, interrogez d'abord les tables système Paimon.

Interroger la table système Snapshots

SELECT * FROM hologres.hg_list_snapshots('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

Le résultat correspond à la table système Snapshots de Paimon comme suit :

Champ Type Description Champ Paimon
branch_name TEXT Nom de la branche branch_name
snapshot_id TEXT ID du snapshot snapshot_id
schema_id TEXT ID du schéma de table schema_id
commit_kind TEXT Type de validation commit_kind
commit_time TIMESTAMPTZ Heure de validation commit_time
extend_info TEXT (JSON) Autres propriétés du snapshot Paimon —

Pour lister les IDs de snapshot disponibles, utilisez hg_list_versions :

SELECT * FROM hologres.hg_list_versions('<ext_database_name>.<ext_schema_name>.<ext_table_name>');

Interroger la table système Tags

SELECT * FROM hologres.hg_list_tags('<ext_database_name>.<ext_schema_name>.<ext_table_name>');
Champ Type Description Champ Paimon
branch_name TEXT Nom de la branche branch_name
tag_name TEXT Nom du tag tag_name
snapshot_id TEXT ID du snapshot snapshot_id
schema_id TEXT ID du schéma de table schema_id
commit_time TIMESTAMPTZ Heure de validation commit_time
extend_info TEXT (JSON) Autres propriétés du tag Paimon —

Requêtes par branche

Hologres V3.2 et versions ultérieures permettent d'interroger les données d'une branche spécifique dans une table Paimon.

Lister les branches

SELECT * FROM hologres.hg_list_branches('<ext_database_name>.<ext_schema_name>.<ext_table_name>');
Champ Type Description Champ Paimon
branch_name TEXT Nom de la branche branch_name
create_time TIMESTAMPTZ Heure de création de la branche create_time
extend_info TEXT (JSON) Autres propriétés de la branche Paimon —

Interroger les données d'une branche

-- Query the current state of a branch
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR branch AS OF '<branch_name>';

-- Query a historical snapshot of a branch by timestamp
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR branch AS OF '<branch_name>' TIMESTAMP AS OF '<timestamp>';

-- Query a historical snapshot of a branch by tag
SELECT * FROM '<ext_database_name>.<ext_schema_name>.<ext_table_name>' FOR branch AS OF '<branch_name>' TAG AS OF '<tag_name>';
Si la propriété scan.fallback-branch est définie sur une table Paimon et qu'une partition est absente de la branche actuelle, Hologres lit automatiquement cette partition depuis la branche de secours. Consultez la documentation Manage Branch pour plus de détails.

Accéder aux tables Paimon via un serveur distant

En alternative aux bases de données externes, vous pouvez utiliser un serveur distant et des tables distantes pour accéder aux données Paimon. Cette approche utilise l'interface standard PostgreSQL Foreign Data Wrapper (FDW).

Les requêtes de voyage dans le temps, les requêtes par branche et la mise en miroir des données ne sont pas disponibles via les tables distantes. Utilisez des bases de données externes pour bénéficier de ces fonctionnalités.
  1. Créez un serveur distant.

    CREATE SERVER IF NOT EXISTS <server_name> FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
        catalog_type 'paimon',
        metastore_type 'dlf-rest',
        dlf_catalog '<dlf_catalog_name>'
    );

    Pour connaître les autres options de serveur, consultez la rubrique Autres opérations sur les serveurs distants (SQL).

  2. Créez des tables distantes en utilisant l'une des méthodes suivantes. Option 1 : Importer un schéma entier en une seule fois

    IMPORT FOREIGN SCHEMA <dlf_db_name>
    FROM SERVER <server_name>
    INTO <holo_schema_name>
    OPTIONS (if_table_exist 'update');

    Consultez la rubrique IMPORT FOREIGN SCHEMA. Option 2 : Créer des tables individuelles

    CREATE FOREIGN TABLE <foreign_table_name>
    (
      { column_name data_type }
      [, ... ]
    )
    SERVER <server_name>
    OPTIONS
    (
      schema_name '<dlf_db_name>',
      table_name '<dlf_table_name>'
    );

    Consultez la rubrique CREATE FOREIGN TABLE.

Lire les données Paimon à l'aide de tables dynamiques

Une table dynamique actualise automatiquement son contenu à partir d'une ou plusieurs tables de base selon une planification configurable. Hologres V3.0 et versions ultérieures prennent en charge les tables distantes MaxCompute et les tables distantes DLF en tant que tables de base pour les tables dynamiques. Consultez la rubrique Table dynamique.

Les trois modes d'actualisation utilisent la même structure CREATE DYNAMIC TABLE . Le paramètre auto_refresh_mode contrôle la manière dont les données sont lues depuis la source Paimon.

-- Full refresh: re-reads all data on each cycle
CREATE DYNAMIC TABLE paimon_dt_full
WITH (
    auto_refresh_mode = 'full',
    freshness = '3 minutes'
) AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

-- Incremental refresh: reads only new or changed data
CREATE DYNAMIC TABLE paimon_dt_incremental
WITH (
    auto_refresh_mode = 'incremental',
    freshness = '3 minutes'
) AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

-- Auto mode: Hologres selects full or incremental refresh based on data characteristics
CREATE DYNAMIC TABLE paimon_dt_auto
WITH (
    auto_refresh_mode = 'auto',
    freshness = '3 minutes'
) AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;

Étapes suivantes