Todos os produtos
Search
Central de documentação

Hologres:Speed up access to OSS with DLF

Última atualização: Jun 28, 2026

A aceleração de data lake do Hologres, baseada no Alibaba Cloud Data Lake Formation (DLF) 1.0 e no Object Storage Service (OSS), permite consultar arquivos de data lake do OSS diretamente no Hologres por meio de tabelas externas, sem ingestão de dados. Este tópico explica como configurar o acesso ao DLF 1.0 e ler dados do OSS no Hologres. Para gravar dados do Hologres no OSS, consulte Exportar para um data lake.

Importante

Somente o DLF 1.0 (DLF-Legacy) oferece suporte à aceleração de data lake do OSS. A nova versão do DLF não inclui esse recurso.

Visão geral

A configuração do acesso ao lake baseado em DLF envolve seis etapas:

  1. Ativar o DLF_FDW — ative o backend do foreign data wrapper na instância

  2. Criar a extensão — carregue o plugin DLF FDW em cada banco de dados de destino

  3. Criar um servidor externo — informe ao Hologres a localização do DLF 1.0 e do OSS

  4. (Opcional) Criar um mapeamento de usuário — delegue o acesso a uma identidade específica de usuário RAM

  5. Criar tabelas externas — mapeie as tabelas de metadados do DLF 1.0 para o Hologres

  6. Consultar dados — execute SQL padrão nos arquivos de lake do OSS

Pré-requisitos

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

  • DLF 1.0 ativado. Para mais detalhes, consulte Início rápido e Regiões e endpoints suportados.

  • OSS ativado com seus dados prontos. Para mais detalhes, consulte Introdução ao OSS.

  • Autorização do OSS configurada. A conta usada para consultar tabelas externas deve ter permissões de acesso ao OSS; caso contrário, as consultas falharão mesmo que a tabela externa seja criada com sucesso. Para mais detalhes, consulte Bucket Policy (Java SDK V1).

  • (Opcional) Serviço OSS-HDFS habilitado, se você planeja usar o OSS-HDFS como camada de armazenamento. Para mais detalhes, consulte Habilitar o OSS-HDFS.

Limitações

Limitações de leitura

  • Tabelas externas não aceitam UPDATE, DELETE nem TRUNCATE.

  • A aceleração de data lake não é compatível com instâncias secundárias somente leitura.

  • As consultas carregam as partições correspondentes na memória do Hologres durante a execução. O volume de dados por consulta é limitado a 200 GB após a filtragem de partições.

  • O comando IMPORT FOREIGN SCHEMA aceita até 512 partições por consulta. Adicione condições de filtro de partição para manter cada consulta dentro desse limite.

Limitações de gravação

  • Apenas INSERT INTO é suportado ao exportar dados do Hologres para o OSS. Os comandos INSERT ON CONFLICT, UPDATE e DELETE não são suportados.

  • Gravar dados no OSS requer o Hologres V1.3 ou posterior. Apenas os formatos ORC, Parquet, CSV e SequenceFile são suportados.

Configurar o ambiente

Etapa 1: Ativar o DLF_FDW

O DLF_FDW é o foreign data wrapper (FDW) que conecta o Hologres ao DLF 1.0 e ao OSS. Ative-o no console do Hologres para permitir a comunicação da instância com o DLF.

No console do Hologres, acesse a página Instances ou Instance Details. Na coluna Actions da instância desejada, clique em Data Lake Acceleration e confirme a operação. O sistema configura automaticamente o DLF_FDW e reinicia a instância em segundo plano. O recurso estará disponível após a conclusão da reinicialização.

Ao ativar o DLF_FDW, o sistema utiliza recursos padrão (1 núcleo e 4 GB de memória). Não é necessário adquirir recursos adicionais.

O Hologres está implementando gradualmente a configuração self-service do DLF_FDW no console. Se o botão Data Lake Acceleration não estiver visível, siga as instruções em Erros comuns de preparação de atualização ou entre em contato com o suporte pelo grupo DingTalk do Hologres. Para mais detalhes, consulte Como obter suporte online? .

Etapa 2: Criar a extensão

Um Superuser deve executar a seguinte instrução uma vez por banco de dados para carregar o plugin DLF FDW. Isso permite que o Hologres leia dados do OSS por meio do DLF 1.0.

CREATE EXTENSION IF NOT EXISTS dlf_fdw;

Etapa 3: Criar um servidor externo

O objeto de servidor externo informa ao Hologres onde o DLF 1.0 e o OSS estão localizados e como autenticar. Um Superuser deve criá-lo — contas sem privilégios de Superuser resultarão em erros de permissão.

O DLF 1.0 suporta múltiplos catálogos. Se você tiver um único cluster EMR, use o catálogo padrão. Caso possua vários clusters EMR, utilize um catálogo personalizado para controlar a qual cluster o Hologres se conectará.

Escolha o tipo de armazenamento correspondente à sua configuração:

Armazenamento nativo do OSS (catálogo padrão)

-- View existing servers.
-- meta_warehouse_server and odps_server are built-in system servers and cannot be modified or deleted.
SELECT * FROM pg_foreign_server;

-- Drop an existing server if needed.
DROP SERVER <server_name> CASCADE;

-- Create a server using the DLF 1.0 default catalog and native OSS.
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'
);

Armazenamento OSS-HDFS

O OSS-HDFS suporta apenas acesso via rede interna. Encontre o nome de domínio do bucket na página Overview do seu bucket com OSS-HDFS habilitado no console do OSS.

image

Após confirmar o nome de domínio, crie o servidor:

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

Parâmetros

Parâmetro

Descrição

Exemplo

<server_name>

Nome personalizado para o servidor externo

dlf_server

dlf_region

Região onde o DLF 1.0 está implantado. Consulte a lista de regiões abaixo.

cn-hangzhou

dlf_endpoint

Endpoint interno do DLF 1.0. Padrão: dlf-share.<region_id>.aliyuncs.com

dlf-share.cn-shanghai.aliyuncs.com

oss_endpoint

Endpoint interno do OSS (OSS nativo) ou domínio do OSS-HDFS (OSS-HDFS). Veja os exemplos abaixo.

oss-cn-shanghai-internal.aliyuncs.com

Regiões suportadas

Região

**Valor de dlf_region**

**oss_endpoint do OSS nativo**

China (Pequim)

cn-beijing

oss-cn-beijing-internal.aliyuncs.com

China (Hangzhou)

cn-hangzhou

oss-cn-hangzhou-internal.aliyuncs.com

China (Xangai)

cn-shanghai

oss-cn-shanghai-internal.aliyuncs.com

China (Shenzhen)

cn-shenzhen

oss-cn-shenzhen-internal.aliyuncs.com

China (Zhangjiakou)

cn-zhangjiakou

oss-cn-zhangjiakou-internal.aliyuncs.com

Singapura

ap-southeast-1

oss-ap-southeast-1-internal.aliyuncs.com

Alemanha (Frankfurt)

eu-central-1

oss-eu-central-1-internal.aliyuncs.com

EUA (Virgínia)

us-east-1

oss-us-east-1-internal.aliyuncs.com

Indonésia (Jacarta)

ap-southeast-5

oss-ap-southeast-5-internal.aliyuncs.com

Para OSS-HDFS, o formato de oss_endpoint é <bucket_name>.<region_id>.oss-dls.aliyuncs.com — por exemplo, cn-hangzhou.oss-dls.aliyuncs.com.

Etapa 4: Criar um mapeamento de usuário (opcional)

Um mapeamento de usuário permite que o proprietário do servidor externo conceda a uma identidade específica (como um usuário RAM) acesso ao DLF 1.0 e ao OSS. A conta mapeada deve ter permissões de consulta nos dados externos.

-- 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 a specific RAM user.
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 user mappings.
DROP USER MAPPING FOR current_user SERVER <server_name>;
DROP USER MAPPING FOR "p4_123xxx" SERVER <server_name>;

Para obter mais informações, consulte a documentação do PostgreSQL CREATE USER MAPPING.

Ler dados do OSS

Etapa 5: Criar tabelas externas

Primeiro, crie uma tabela de metadados no DLF 1.0 e certifique-se de que os dados foram extraídos. Em seguida, crie tabelas externas no Hologres usando um dos dois métodos:

  • CREATE FOREIGN TABLE — cria uma única tabela externa com mapeamento manual de campos. Os campos de partição são definidos como campos regulares (nenhum dado é armazenado no Hologres).

  • IMPORT FOREIGN SCHEMA — cria uma ou mais tabelas externas em massa com mapeamento automático de campos.

Se uma tabela externa do OSS tiver o mesmo nome de uma tabela interna existente do Hologres, o IMPORT FOREIGN SCHEMA ignorará essa tabela. Nesse caso, use CREATE FOREIGN TABLE com um nome diferente.

Tipos de dados de chave de partição suportados: TEXT, VARCHAR e INT.

Sintaxe

-- Method 1: CREATE FOREIGN TABLE
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>'
);

-- Method 2: IMPORT FOREIGN SCHEMA
IMPORT FOREIGN SCHEMA <schema_name>
    [ { LIMIT TO | EXCEPT } ( <table_name> [, ...] ) ]
    FROM SERVER <server_name>
    INTO <local_schema>
    [ OPTIONS ( option 'value' [, ...] ) ];

Parâmetro

Descrição

schema_name

Nome do metabanco de dados criado no DLF 1.0

table_name

Nome da tabela de metadados criada no DLF 1.0

<server_name>

Nome do servidor externo criado no Hologres

local_schema

Schema de destino no Hologres

Exemplos

Crie uma única tabela externa mapeada para a tabela dlf_oss_test no metabanco de dados dlfpro do DLF 1.0:

-- Method 1: CREATE FOREIGN TABLE
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 (single table, update if exists)
IMPORT FOREIGN SCHEMA dlfpro LIMIT TO (
    dlf_oss_test
)
FROM SERVER <server_name> INTO public OPTIONS (if_table_exist 'update');

Importe todas as tabelas do metabanco de dados dlfpro para o schema public:

-- Import the entire database.
IMPORT FOREIGN SCHEMA dlfpro
FROM SERVER <server_name> INTO public OPTIONS (if_table_exist 'update');

-- Import specific tables only.
IMPORT FOREIGN SCHEMA dlfpro (
    table1,
    table2,
    tablen
)
FROM SERVER <server_name> INTO public OPTIONS (if_table_exist 'update');

Etapa 6: Consultar dados

Após criar as tabelas externas, consulte-as com SQL padrão. O Hologres carrega as partições relevantes na memória no momento da consulta.

-- Non-partitioned table
SELECT * FROM dlf_oss_test;

-- Partitioned table (add a partition filter to stay within the 512-partition limit)
SELECT * FROM partition_table WHERE dt = '2013';

Solução de problemas

Erro: ERROR: babysitter not ready,req:name:"HiveAccess"

A configuração do backend DLF_FDW não foi ativada. No console do Hologres, acesse a página Instances, clique em Data Lake Acceleration e ative a configuração do backend.

Próximos passos