Tous les produits
Search
Centre de documentation

Data Lake Formation:Access DLF from Hologres

Dernière mise à jour :Aug 11, 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, assurez-vous de disposer des éléments suivants :

Limites

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

  • 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 des 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 du lac de données OSS dans HoloWeb ne permet pas de créer visuellement un catalogue DLF.

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

Choisir un mode d'authentification

Hologres prend en charge deux modes pour authentifier l'accès à un catalogue DLF :

Mode Quand l'utiliser
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. Requiert 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 nécessaire.

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 requise. 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 Une 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 attachez-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 autoriser Hologres à 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 Le nom de ressource Alibaba Cloud (ARN) du rôle RAM créé à l'étape 1. Format : acs:ram::<account-id>:role/<role-name>.
    comment Non Une 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 CREATE USER MAPPING . Pour créer un utilisateur RAM, consultez Create a RAM user . Pour créer un compte BASIC, consultez 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 en utilisant le 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 temps quasi réel, soit à intervalles réguliers. 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>;

Répertorier 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 sur les 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 des snapshots historiques de 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 les 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 la 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 répertorier les ID 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 la 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 d'une table Paimon.

Répertorier 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 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 s'appuie sur 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 les 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 un planning configurable. Hologres V3.0 et versions ultérieures prennent en charge les tables distantes MaxCompute et les tables distantes DLF comme 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