Todos os produtos
Search
Central de documentação

Data Lake Formation:Access DLF from Hologres

Última atualização: Sep 18, 2026

O Hologres V3.2 e versões posteriores suportam o acesso a dados do Data Lake Formation (DLF) Catalog por meio do Paimon REST. Após a conexão, você pode consultar tabelas Paimon diretamente do Hologres, usar time travel para inspecionar snapshots históricos, ler de branches específicas e carregar dados incrementalmente em tabelas dinâmicas.

Pré-requisitos

Antes de começar, verifique se você tem:

Limitações

  • Não há suporte para gravação em tabelas Paimon. As operações INSERT, UPDATE, DELETE e TRUNCATE não estão disponíveis.

  • Consultas de time travel, consultas de branch e espelhamento de dados estão disponíveis apenas para tabelas Paimon mapeadas por meio de um external database — não por meio de um foreign server.

  • O time travel não tem suporte em tabelas que passaram por evolução de schema, nem em tabelas dinâmicas.

  • O espelhamento de dados não tem suporte para tabelas Paimon com chaves primárias.

  • Não há suporte para leitura de partições padrão em que a chave de partição seja NULL ou vazia.

  • O recurso de aceleração do data lake do OSS no HoloWeb não permite criar visualmente um DLF Catalog.

  • O recurso de aceleração do data lake não pode ser ativado para instâncias secundárias somente leitura.

Escolha um modo de autenticação

O Hologres suporta dois modos para autenticar o acesso a um DLF Catalog:

Modo

Quando usar

SLR (service-linked role)

Padrão. Use ao acessar dados sob sua identidade atual do Alibaba Cloud. O Hologres gerencia a autorização entre serviços automaticamente por meio de repasse de identidade.

STS (Security Token Service)

Indicado para acesso entre contas ou quando uma conta BASIC do Hologres precisa de acesso ao DLF. Requer uma função RAM e mapeamento explícito de usuário.

Comece com o modo SLR, a menos que seja necessário acesso entre contas ou suporte a conta BASIC.

Mapeie um catalog usando um external database

SLR mode

Uma service-linked role (SLR) é uma função RAM que autoriza um service do Alibaba Cloud a acessar outros serviços em seu nome. O Hologres cria e gerencia a SLR automaticamente — nenhuma configuração manual de função é necessária. Consulte Service-linked role.

  1. Conecte-se a uma instância do Hologres e crie um external database.

    Parâmetro

    Obrigatório

    Descrição

    catalog_type

    Sim

    Sempre paimon para tabelas Paimon.

    metastore_type

    Sim

    Sempre dlf-rest ao conectar por meio do DLF.

    dlf_catalog

    Sim

    O nome do seu DLF Catalog.

    comment

    Não

    Uma descrição para o external database.

    CREATE EXTERNAL DATABASE <ext_database_name> WITH
      catalog_type 'paimon'
      metastore_type 'dlf-rest'
      dlf_catalog '<dlf_catalog_name>'
      comment 'Catalog on dlf'
      ;
  2. Visualize os schemas e as tabelas do external database.

    -- 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. Consulte os dados.

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

STS mode

O Security Token Service (STS) emite credenciais temporárias com permissões e períodos de validade configuráveis. Use este modo quando um usuário RAM ou uma conta BASIC de outra conta precisar acessar dados do DLF por meio do Hologres.

  1. No RAM console, crie uma função RAM e atribua a permissão AliyunDLFFullAccess ou AliyunDLFReadOnlyAccess. Consulte Create a RAM role and grant permissions.

  2. Edite a política de confiança da função RAM para permitir que o Hologres a assuma. Consulte Modify the trust policy of a RAM role.

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "hologres.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }
  3. No Data Lake Formation console, conceda à função RAM acesso aos bancos de dados e tabelas relevantes. Consulte Permission management.

  4. No Hologres, crie um external database e referencie a função RAM.

    Parâmetro

    Obrigatório

    Descrição

    catalog_type

    Sim

    Sempre paimon para tabelas Paimon.

    metastore_type

    Sim

    Sempre dlf-rest ao conectar por meio do DLF.

    dlf_catalog

    Sim

    O nome do seu DLF Catalog.

    rolearn

    Sim

    O Alibaba Cloud Resource Name (ARN) da função RAM criada na etapa 1. Formato: acs:ram::<account-id>:role/<role-name>.

    comment

    Não

    Uma descrição para o external database.

    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. Crie um mapeamento de usuário para vincular o usuário RAM ou a conta BASIC à função RAM.

    Para detalhes sobre mapeamentos de usuário, consulte CREATE USER MAPPING . Para criar um usuário RAM, consulte Create a RAM user . Para criar uma conta BASIC, consulte User management .
    CREATE USER MAPPING FOR "<RAM_user|BASIC_account>"
    EXTERNAL DATABASE <ext_database_name>
    OPTIONS
    (
       rolearn 'acs:ram::10638060***:role/***ramrole'
    );
  6. Faça login como usuário RAM pelo Hologres Management Console, ou conecte-se usando a conta BASIC, e consulte os dados.

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

Acelere consultas com espelhamento de tabelas do lake

O Hologres V3.2 e versões posteriores suportam o espelhamento de tabelas do lake, que sincroniza metadados e dados de uma fonte de dados externa para o Hologres — em tempo quase real ou em intervalos agendados. O espelhamento suporta tabelas completas e partições específicas de tabelas particionadas. Consulte Lake table mirroring.

Operações de external schema

Crie um external schema

Criar um external schema cria um banco de dados correspondente no DLF Catalog.

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

Atualize os metadados do schema

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

Exclua um external schema

Excluir um external schema remove o banco de dados correspondente e todas as suas tabelas do DLF Catalog. Essa operação não pode ser desfeita.

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

Liste as tabelas de um schema

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

Operações de external table

Crie uma external table

-- 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'
);

Atualize os metadados da tabela

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

Exclua uma external table

Excluir uma external table remove a tabela do DLF Catalog. Essa operação não pode ser desfeita.

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

Colete estatísticas da tabela

ANALYZE e AUTO ANALYZE coletam estatísticas de colunas que o otimizador de consultas usa para gerar planos de execução eficientes. Consulte ANALYZE and 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';

Consultas de time travel

O Hologres V3.2 e versões posteriores suportam a consulta de snapshots históricos de tabelas Paimon. As três abordagens utilizam a sintaxe 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>';

Para localizar snapshots ou tags disponíveis, consulte primeiro as tabelas de sistema do Paimon.

Consulte a tabela de sistema Snapshots

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

O resultado mapeia para a tabela de sistema Snapshots do Paimon da seguinte forma:

Campo

Tipo

Descrição

Campo Paimon

branch_name

TEXT

Nome da branch

branch_name

snapshot_id

TEXT

ID do snapshot

snapshot_id

schema_id

TEXT

ID do schema da tabela

schema_id

commit_kind

TEXT

Tipo de commit

commit_kind

commit_time

TIMESTAMPTZ

Horário do commit

commit_time

extend_info

TEXT (JSON)

Outras propriedades do snapshot Paimon

Para listar os IDs de snapshot disponíveis, use hg_list_versions:

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

Consulte a tabela de sistema Tags

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

Campo

Tipo

Descrição

Campo Paimon

branch_name

TEXT

Nome da branch

branch_name

tag_name

TEXT

Nome da tag

tag_name

snapshot_id

TEXT

ID do snapshot

snapshot_id

schema_id

TEXT

ID do schema da tabela

schema_id

commit_time

TIMESTAMPTZ

Horário do commit

commit_time

extend_info

TEXT (JSON)

Outras propriedades da tag Paimon

Consultas de branch

O Hologres V3.2 e versões posteriores suportam a consulta de dados de uma branch específica em uma tabela Paimon.

Liste as branches

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

Campo

Tipo

Descrição

Campo Paimon

branch_name

TEXT

Nome da branch

branch_name

create_time

TIMESTAMPTZ

Horário de criação da branch

create_time

extend_info

TEXT (JSON)

Outras propriedades da branch Paimon

Consulte dados de uma branch

-- 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>';
Se a propriedade scan.fallback-branch estiver definida em uma tabela Paimon e uma partição estiver ausente da branch atual, o Hologres lê automaticamente essa partição da branch de fallback. Consulte Manage Branch para mais detalhes.

Acesse tabelas Paimon por meio de um foreign server

Como alternativa aos external databases, você pode usar um foreign server e foreign tables para acessar dados Paimon. Essa abordagem utiliza a interface padrão PostgreSQL foreign data wrapper (FDW).

Consultas de time travel, consultas de branch e espelhamento de dados não estão disponíveis por meio de foreign tables. Para esses recursos, utilize external databases.
  1. Crie um foreign server.

    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>'
    );

    Para opções adicionais de server, consulte More operations on foreign servers (SQL).

  2. Crie foreign tables usando um dos métodos a seguir. Opção 1: importe um schema inteiro de uma vez

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

    Consulte IMPORT FOREIGN SCHEMA. Opção 2: crie tabelas individualmente

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

    Consulte CREATE FOREIGN TABLE.

Leia dados Paimon com tabelas dinâmicas

Uma tabela dinâmica atualiza automaticamente seu conteúdo a partir de uma ou mais tabelas base em um agendamento configurável. O Hologres V3,0 e versões posteriores suportam foreign tables do MaxCompute e foreign tables do DLF como tabelas base para tabelas dinâmicas. Consulte Dynamic table.

Os três modos de atualização utilizam a mesma estrutura CREATE DYNAMIC TABLE. O parâmetro auto_refresh_mode controla como os dados são lidos da 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>;

Próximos passos