Todos os produtos
Search
Central de documentação

Hologres:Acelerar consultas de data lake

Última atualização: Jun 28, 2026

O Hologres integra-se ao Alibaba Cloud Data Lake Formation (DLF) e ao Object Storage Service (OSS) para executar consultas SQL diretamente nos dados do seu data lake no OSS, sem movê-los para o Hologres. O Hologres processa a consulta na origem dos dados em vez de importá-los para o warehouse. Assim, você obtém análises SQL em grandes conjuntos de dados do OSS, evitando duplicação e custos de importação. Com tabelas externas, o Hologres mapeia seus dados do OSS no local original e os consulta via SQL padrão, mantendo-os no OSS.

O que você aprenderá

Neste tutorial, você aprenderá a:

  • Ativar o OSS, o DLF e o Hologres e carregar dados de teste

  • Configure o Hologres para conectar-se ao seu data lake no OSS

  • Consultar dados do OSS usando tabelas externas do Hologres (sem movimentação de dados)

  • Importar dados do OSS para tabelas internas do Hologres para obter maior desempenho nas consultas

Como funciona

O Hologres usa o mecanismo de foreign data wrapper (FDW) para conectar-se ao DLF, responsável por gerenciar os metadados do seu data lake no OSS. Ao consultar uma tabela externa, o Hologres lê os dados diretamente do OSS, sem necessidade de importação. O desempenho da consulta varia geralmente de segundos a minutos, dependendo do volume de dados.

Tabelas externas suportam dados armazenados no OSS nos seguintes formatos: Hudi, Delta, Paimon, ORC, Parquet, CSV e SequenceFile.

Para consultas consistentemente mais rápidas ou cargas de trabalho complexas com muitas junções, importe os dados para tabelas internas do Hologres. As tabelas internas armazenam dados dentro do Hologres, oferecendo melhor desempenho de consulta e maior throughput de processamento, mas geram custos adicionais de armazenamento. Consulte Faturamento.

Os seguintes serviços atuam em conjunto nesta solução:

Serviço

Função

Object Storage Service (OSS)

Armazenamento de data lake — armazena os arquivos de dados brutos

Data Lake Formation (DLF)

Catálogo unificado de metadados — rastreia bancos de dados, tabelas e esquemas para dados no OSS

Hologres

Mecanismo de consulta — acelera análises em dados do OSS usando SQL

Observações de uso

Clusters compartilhados do Hologres suportam apenas consultas a data lakes do OSS por meio de tabelas externas.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Uma conta Alibaba Cloud com permissões para ativar o OSS, o DLF e o Hologres

  • Acesso de superusuário à instância do Hologres (necessário para criar extensões e servidores externos)

Preparar o ambiente

Este tutorial usa a região China (Shanghai) como exemplo.

Etapa 1: Ativar o OSS e fazer upload dos dados de teste

  1. Acesse a página de ativação do OSS e siga as instruções na tela para ativar o serviço.

    Nota

    Após ativar o serviço OSS, o método de faturamento padrão é pagamento conforme o uso. Para reduzir custos, recomendamos comprar um plano de recursos.

  2. Faça login no console do OSS e crie um bucket. Para detalhes, consulte Início rápido pelo console.

  3. Baixe o arquivo tpch_10g_orc_3.zip e faça o upload dele para uma pasta no seu bucket.

    O pacote contém apenas as tabelas nation_orc , supplier_orc e partsupp_orc usadas neste tutorial. Após o upload, exclua quaisquer arquivos gerados pelo sistema, como .DS_Store .

    image.png

Etapa 2: Ativar o DLF e importar metadados

  1. Acesse a página de ativação do DLF e ative o serviço.

  2. Faça login no console DLF-Legacy. Na página Metadata Management, clique em Create Database. Este tutorial utiliza um banco de dados chamado mydatabase. Para detalhes, consulte Bancos de dados, tabelas e funções.

  3. Na página Metadata Discovery, crie um job para importar os dados de teste do OSS. Para detalhes, consulte Descoberta de metadados. Após a conclusão do job, as tabelas importadas aparecerão na aba Table da página Metadata.

    image.png

Etapa 3: Comprar uma instância do Hologres

Compre uma instância do Hologres seguindo as instruções em Comprar uma instância do Hologres.

Configure o Hologres para aceleração de data lake

Etapa 1: Ativar o recurso de aceleração de data lake

Acesse a página de instâncias do Hologres. Na coluna Actions da sua instância, clique em Lake Acceleration e confirme. A instância reiniciará após a ativação deste recurso.

Etapa 2: Criar um banco de dados

Faça login na instância do Hologres e crie um banco de dados. Para detalhes, consulte Conectar e consultar com o HoloWeb.

Etapa 3: Criar as extensões necessárias

O Hologres V2.1 e versões posteriores criam a extensão dlf_fdw por padrão. Verifique a versão da sua instância na página Instance Details na lista de instâncias do Hologres . Se sua versão for V2.1 ou superior, pule esta etapa.

Execute as seguintes instruções como superusuário no Editor SQL no HoloWeb. Essas operações aplicam-se a todo o banco de dados e precisam ser executadas apenas uma vez por banco. Para informações sobre como conceder permissões de superusuário, consulte Conceder permissões a uma conta de serviço.

  1. Crie a extensão plpython3u:

    CREATE EXTENSION IF NOT EXISTS plpython3u;
  2. Ative a extensão dlf_fdw:

    CREATE EXTENSION IF NOT EXISTS dlf_fdw;

Etapa 4: Criar um servidor externo

Execute a seguinte instrução para criar um servidor externo chamado dlf_server. Isso configura as informações de endpoint que o Hologres usa para comunicar-se com o DLF e o OSS. Para detalhes dos parâmetros, consulte Criar um servidor externo.

-- China (Shanghai) region example
CREATE SERVER IF NOT EXISTS dlf_server FOREIGN DATA WRAPPER dlf_fdw OPTIONS (
    dlf_region 'cn-shanghai',
    dlf_endpoint 'dlf-share.cn-shanghai.aliyuncs.com',
    oss_endpoint 'oss-cn-shanghai-internal.aliyuncs.com'
);

Consultar dados do OSS usando tabelas externas

Uma tabela externa do Hologres mapeia dados armazenados no OSS — os dados permanecem no OSS e não consomem armazenamento do Hologres. Use tabelas externas para consultas ad hoc ou quando quiser evitar a duplicação de dados.

Dica: Mantenha grandes tabelas de fatos no OSS e consulte-as como tabelas externas. Importe tabelas de dimensões frequentemente associadas para o Hologres como tabelas internas para obter o melhor equilíbrio entre custo e desempenho.

Etapa 1: Mapear tabelas do OSS para tabelas externas do Hologres

-- Replace "mydatabase" with the name of your database in DLF.
IMPORT FOREIGN SCHEMA mydatabase LIMIT TO
(
  nation_orc,
  supplier_orc,
  partsupp_orc
)
FROM SERVER dlf_server INTO public OPTIONS (if_table_exist 'update');

Etapa 2: Executar uma consulta

Após criar as tabelas externas, consulte-as diretamente. O exemplo TPC-H Q11 a seguir associa três tabelas no data lake do OSS:

-- TPC-H Q11: identify the most important subset of suppliers' parts
SELECT
    ps_partkey,
    SUM(ps_supplycost * ps_availqty) AS value
FROM
    partsupp_orc,
    supplier_orc,
    nation_orc
WHERE
    ps_suppkey = s_suppkey
    AND s_nationkey = n_nationkey
    AND RTRIM(n_name) = 'EGYPT'
GROUP BY ps_partkey
HAVING
    SUM(ps_supplycost * ps_availqty) > (
        SELECT SUM(ps_supplycost * ps_availqty) * 0.000001
        FROM partsupp_orc, supplier_orc, nation_orc
        WHERE ps_suppkey = s_suppkey
            AND s_nationkey = n_nationkey
            AND RTRIM(n_name) = 'EGYPT'
    )
ORDER BY value DESC;

A consulta retorna linhas classificadas pelo valor das peças. Os resultados refletem dados lidos em tempo real do OSS.

(Opcional) Consultar dados do OSS usando tabelas internas

Importe dados do OSS para tabelas internas do Hologres quando precisar de consultas repetidas mais rápidas ou análises complexas. Tabelas internas armazenam dados dentro do Hologres para otimizar o desempenho da consulta, mas taxas de armazenamento são aplicáveis. Consulte Faturamento.

Etapa 1: Criar tabelas internas

-- Create the nation table
DROP TABLE IF EXISTS NATION;

BEGIN;
CREATE TABLE NATION (
    N_NATIONKEY int NOT NULL PRIMARY KEY,
    N_NAME      text NOT NULL,
    N_REGIONKEY int NOT NULL,
    N_COMMENT   text NOT NULL
);
CALL set_table_property('NATION', 'distribution_key', 'N_NATIONKEY');
CALL set_table_property('NATION', 'bitmap_columns', '');
CALL set_table_property('NATION', 'dictionary_encoding_columns', '');
COMMIT;

-- Create the supplier table
DROP TABLE IF EXISTS SUPPLIER;

BEGIN;
CREATE TABLE SUPPLIER (
    S_SUPPKEY  int NOT NULL PRIMARY KEY,
    S_NAME     text NOT NULL,
    S_ADDRESS  text NOT NULL,
    S_NATIONKEY int NOT NULL,
    S_PHONE    text NOT NULL,
    S_ACCTBAL  DECIMAL(15, 2) NOT NULL,
    S_COMMENT  text NOT NULL
);
CALL set_table_property('SUPPLIER', 'distribution_key', 'S_SUPPKEY');
CALL set_table_property('SUPPLIER', 'bitmap_columns', 'S_NATIONKEY');
CALL set_table_property('SUPPLIER', 'dictionary_encoding_columns', '');
COMMIT;

-- Create the partsupp table
DROP TABLE IF EXISTS PARTSUPP;

BEGIN;
CREATE TABLE PARTSUPP (
    PS_PARTKEY   int NOT NULL,
    PS_SUPPKEY   int NOT NULL,
    PS_AVAILQTY  int NOT NULL,
    PS_SUPPLYCOST DECIMAL(15, 2) NOT NULL,
    PS_COMMENT   text NOT NULL,
    PRIMARY KEY (PS_PARTKEY, PS_SUPPKEY)
);
CALL set_table_property('PARTSUPP', 'distribution_key', 'PS_PARTKEY');
CALL set_table_property('PARTSUPP', 'bitmap_columns', 'ps_availqty');
CALL set_table_property('PARTSUPP', 'dictionary_encoding_columns', '');
COMMIT;

Etapa 2: Importar dados de tabelas externas

INSERT INTO nation   SELECT * FROM nation_orc;
INSERT INTO supplier SELECT * FROM supplier_orc;
INSERT INTO partsupp SELECT * FROM partsupp_orc;

Etapa 3: Executar uma consulta

-- TPC-H Q11 against internal tables
SELECT
    ps_partkey,
    SUM(ps_supplycost * ps_availqty) AS value
FROM
    partsupp,
    supplier,
    nation
WHERE
    ps_suppkey = s_suppkey
    AND s_nationkey = n_nationkey
    AND RTRIM(n_name) = 'EGYPT'
GROUP BY ps_partkey
HAVING
    SUM(ps_supplycost * ps_availqty) > (
        SELECT SUM(ps_supplycost * ps_availqty) * 0.000001
        FROM partsupp, supplier, nation
        WHERE ps_suppkey = s_suppkey
            AND s_nationkey = n_nationkey
            AND RTRIM(n_name) = 'EGYPT'
    )
ORDER BY value DESC;

Consultas em tabelas internas retornam os mesmos resultados que a consulta em tabela externa, mas com velocidade significativamente maior para cargas de trabalho repetidas ou complexas.

Limpeza

Para evitar cobranças contínuas de armazenamento após concluir este tutorial, exclua os recursos criados:

  1. Remova as tabelas internas no Hologres:

    DROP TABLE IF EXISTS NATION;
    DROP TABLE IF EXISTS SUPPLIER;
    DROP TABLE IF EXISTS PARTSUPP;
  2. Remova as tabelas externas:

    DROP FOREIGN TABLE IF EXISTS nation_orc;
    DROP FOREIGN TABLE IF EXISTS supplier_orc;
    DROP FOREIGN TABLE IF EXISTS partsupp_orc;
  3. Remova o servidor externo:

    DROP SERVER IF EXISTS dlf_server;
  4. Exclua os dados de teste do seu bucket no OSS ou exclua o próprio bucket usando o console do OSS.

Solução de problemas

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

O recurso de aceleração de data lake não está ativado na sua instância. Acesse a página de instâncias do Hologres, clique em Lake Acceleration na coluna Actions e confirme para ativá-lo.

Próximos passos

Este tutorial abordou um fluxo básico de ponta a ponta usando dados de teste. Para uma descrição completa do recurso de aceleração de data lake, incluindo todos os parâmetros e configurações suportados, consulte Aceleração de data lake do OSS usando DLF.