Todos os produtos
Search
Central de documentação

Hologres:Acelere o acesso ao MaxCompute via Common Table

Última atualização: Jun 28, 2026

A partir da versão V3.0.38, o Hologres introduziu um novo caminho de acesso ao MaxCompute, denominado Common Table. Este tópico explica como usar a Common Table para acessar o MaxCompute.

Introdução

Com a Common Table, o Hologres lê dados do MaxCompute por meio de um leitor nativo em C++. Essa abordagem oferece as seguintes vantagens sobre o mecanismo SQE/HQE existente:

Nota

已开通 indica suporte e 未开通 indica falta de suporte.

Item de comparação

SQE/HQE

Common Table

Desempenho

Alto

Muito alto. Melhora o desempenho em 33% em relação ao mecanismo SQE/HQE e em mais de 200% na comparação com a leitura de dados via Storage API de armazenamento aberto.

Mascaramento dinâmico de dados

Exige configuração separada nas tabelas.

Herda regras de mascaramento de dados do MaxCompute, garantindo resultados de consulta consistentes com os do MaxCompute.

Evolução de schema

Não há suporte para leituras diretas, o que resulta em desempenho ligeiramente inferior.

Há suporte para leituras diretas, proporcionando alto desempenho.

Criptografia em repouso

  • Há suporte para tabelas criptografadas com chave KMS.

  • Não há suporte para tabelas criptografadas com a chave padrão.

  • Há suporte para tabelas criptografadas com chave KMS.

  • Há suporte para tabelas criptografadas com a chave padrão.

Tabelas ACID 1.0

未开通

已开通

PK Delta Table

未开通

已开通

Append Delta Table

未开通

已开通

Permissões

  • Para acessar tabelas externas (foreign tables) do MaxCompute via Common Table, são necessárias as permissões listadas na tabela. Para obter mais informações sobre como conceder essas permissões, consulte Gerenciar permissões de usuário usando comandos.

    O Hologres V4.0+ introduziu alterações na verificação de permissões.

    Tipo de tabela

    Operação

    Permissões necessárias no MaxCompute (Hologres V3.0, V3.1 e V3.2)

    Permissões necessárias no MaxCompute (Hologres V4.0+)

    Foreign table

    IMPORT FOREIGN SCHEMA

    Describe, List

    Describe, List

    Consulta de dados

    Describe, Select

    Select

    External table

    Visualização de metadados

    Describe

    Describe

    Consulta de dados

    Describe, Select

    Select

  • Atualmente, o Hologres oferece suporte apenas à leitura do snapshot mais recente de uma MaxCompute Delta Table.

  • Não há suporte para gravação de dados do Hologres de volta em uma MaxCompute Delta Table.

  • Não há suporte para consultas em tabelas do MaxCompute com permissões no nível de linha configuradas.

Recursos

Recurso

Versões do Hologres compatíveis

Column pruning para consultas no MaxCompute

>=4.1.6

Consulta de tabelas MaxCompute Append Delta

>= 3.0.40

>= 3.1.10

>=3.2.0

>=4.0.0

Uso de spillRead em consultas a MaxCompute Delta Tables para resolver erros causados por excesso de arquivos sem spill

MaxCompute csdk open reader failed: storage/formats/orcfile/change_log_reader_util.cpp(255): InvalidArgument: ODPS-0010000:InvalidArgument:Need spill read but TmpDir or TmpCapability no specified.

>= 3.0.41

>= 3.1.10

>= 3.2.0

>= 4.0.0

Leitura de tabelas do MaxCompute com valores padrão

>=3.0.40

>= 3.1.10

>=3.2.0

>=4.0.0

Auto Split Size, que determina automaticamente o tamanho da divisão com base nas especificações da instância

>=3.1.33

>=3.2.0

>=4.0.0

Consulta de dados TIMESTAMP_NTZ

>= 3.0.41

>= 3.1.10

>=3.2.0

>=4.0.0

Predicate pushdown para filtros de igualdade em atributos como clustering keys e primary keys em Delta Tables, melhorando a eficiência do filtro e o desempenho da consulta.

>= 4.0.6

Ativar a Common Table

Escolha o método adequado ao seu cenário.

  • Nível de sessão

    -- Enable Common Table at the session level. Execute this along with a query or DML statement.
    SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
  • Nível de banco de dados

    -- Enable Common Table at the database level.
    ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
  • Nível de instância

    -- Enable Common Table at the instance level.
    ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';

Desativar a Common Table

  • Nível de sessão

    -- Disable Common Table at the session level. Execute this with your query or DML statement.
    SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
  • Nível de banco de dados

    -- Disable Common Table at the database level.
    ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
  • Nível de instância

    -- Disable Common Table at the instance level.
    ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';

Verificar o caminho de acesso atual

  • Execute a seguinte instrução SQL para verificar o mecanismo atual de acesso ao MaxCompute. odps:common_table,dlf:hqe indica que a Common Table está em uso.

    SHOW hg_experimental_external_catalog_routing;
  • Para consultas históricas, verifique o campo query_extinfo no log de consultas lentas. A presença de driver:CommonTable indica o uso da Common Table nessas consultas.

Auto Split Size

O parâmetro Auto Split Size é definido como off por padrão. Ative-o conforme necessário.

Ativar o Auto Split Size

V4.0+

  • Nível de sessão

    -- Enable Auto Split Size at the session level
    SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
  • Nível de banco de dados

    -- Enable Auto Split Size at the database level
    ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
  • Nível de instância

    -- Enable Auto Split Size at the instance level
    ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';

Versões anteriores à V4.0

  • Nível de sessão

    -- Enable Auto Split Size at the session level
    SET hg_experimental_enable_common_table_auto_split_size = 'on';
  • Nível de banco de dados

    -- Enable Auto Split Size at the database level
    ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on';
  • Nível de instância

    -- Enable Auto Split Size at the instance level
    ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';

Desativar o Auto Split Size

V4.0+

  • Nível de sessão

    -- Disable Auto Split Size at the session level
    SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
  • Nível de banco de dados

    -- Disable Auto Split Size at the database level
    ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
  • Nível de instância

    -- Disable Auto Split Size at the instance level
    ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';

Versões anteriores à V4.0

  • Nível de sessão

    -- Disable Auto Split Size at the session level
    SET hg_experimental_enable_common_table_auto_split_size = 'off';
  • Nível de banco de dados

    -- Disable Auto Split Size at the database level
    ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off';
  • Nível de instância

    -- Disable Auto Split Size at the instance level
    ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';

Column pruning

O Hologres V4.1.6 e versões posteriores oferecem suporte a column pruning, enviando filtros aos leitores de dados para acelerar a leitura. Esse recurso vem desativado por padrão no Hologres V4.1.

-- Enable column pruning
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=true');
-- Disable column pruning
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=false');