Todos os produtos
Search
Central de documentação

MaxCompute:Delta Lake external tables

Última atualização: Jun 26, 2026

As tabelas externas do Delta Lake no OSS permitem consultar dados no formato Delta Lake diretamente no local, sem movê-los ou convertê-los. Este tópico explica como criar, configurar e consultar essas tabelas.

Importante

O MaxCompute oferece suporte a tabelas externas do Delta Lake apenas com uma versão fixa do kit de desenvolvimento de software (SDK) do Delta Lake. Não haverá atualizações do SDK nem desenvolvimento futuro desse recurso. Para novas cargas de trabalho de data lake, utilize tabelas externas do Paimon.

Limitações

Antes de criar uma tabela externa do Delta Lake, verifique as seguintes restrições:

Restrição

Detalhe

Impacto

Somente leitura, varredura completa

Suporta apenas leituras completas de todos os dados mapeados para a tabela. Ocultação automática de colunas do sistema, leituras incrementais, leituras de snapshot e operações de escrita não são suportadas.

Para operações ACID, use tabelas Delta do MaxCompute ou tabelas externas do Paimon.

Ausência da propriedade cluster

Tabelas externas do OSS não suportam a propriedade cluster.

Omita a cláusula CLUSTERED BY ao escrever instruções DDL.

Limite de 2 GB por arquivo

Um único arquivo não pode exceder 2 GB.

Divida os arquivos que ultrapassarem esse limite antes de criar a tabela.

Requisito de mesma região

O MaxCompute e o bucket do OSS devem estar na mesma região.

O acesso entre regiões não é suportado e causa falhas na consulta.

Versão fixa do SDK

O SDK do Delta Lake integrado ao MaxCompute é io.delta:delta-core_2.11:0.2.0.5. A compatibilidade futura e retroativa não é garantida; a comunidade open source mantém a compatibilidade.

Utilize dados do Delta Lake gravados com uma versão compatível do SDK.

Tipos de dados suportados

Todos os tipos de dados do MaxCompute listados abaixo são suportados. Para obter detalhes sobre os tipos, consulte Tipos de dados (versão 1.0) e Tipos de dados (versão 2.0).

Tipo de dado

Suportado

Tipo de dado

Suportado

TINYINT

Sim

STRING

Sim

SMALLINT

Sim

DATE

Sim

INT

Sim

DATETIME

Sim

BIGINT

Sim

TIMESTAMP

Sim

BINARY

Sim

TIMESTAMP_NTZ

Sim

FLOAT

Sim

BOOLEAN

Sim

DOUBLE

Sim

ARRAY

Sim

DECIMAL(precision,scale)

Sim

MAP

Sim

VARCHAR(n)

Sim

STRUCT

Sim

CHAR(n)

Sim

JSON

Sim

Criar uma tabela externa

Sintaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name>
(
   <col_name> <data_type>,
   ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'io.delta.hive.DeltaInputFormat'
OUTPUTFORMAT 'io.delta.hive.DeltaOutputFormat'
LOCATION 'oss_location';

DeltaInputFormat e DeltaOutputFormat são classes de entrada/saída do Delta Lake compatíveis com Hive. A classe ParquetHiveSerDe gerencia a serialização subjacente em Parquet, pois o Delta Lake armazena dados nesse formato. Especifique as três classes para registrar a tabela corretamente.

Para obter detalhes sobre os parâmetros, consulte Parâmetros básicos de sintaxe.

Consultar dados

Exemplo: criar e consultar uma tabela externa particionada do Delta Lake

Este exemplo apresenta o fluxo de trabalho completo: upload de dados do Delta Lake para o OSS, criação de uma tabela externa particionada no MaxCompute, importação de metadados de partição e execução de uma consulta.

Pré-requisitos

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

Etapas

  1. Faça o upload dos dados de teste. Acesse o console do OSS e carregue um arquivo de dados de teste no formato Delta Lake na pasta oss-mc-test/Demo_delta_pt/dt=20250612/. Para mais detalhes, consulte Fazer upload de arquivos para o OSS.

    O MaxCompute cria pastas no OSS automaticamente quando instruções SQL referenciam tabelas externas com funções definidas pelo usuário (UDFs). Nos demais casos, crie a pasta manualmente.
  2. Crie uma tabela externa do Delta Lake.

    CREATE EXTERNAL TABLE test_delta_pt (
        id INT
    )
    PARTITIONED BY (dt STRING)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
    STORED AS
    INPUTFORMAT 'io.delta.hive.DeltaInputFormat'
    OUTPUTFORMAT 'io.delta.hive.DeltaOutputFormat'
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo_delta_pt/';
  3. Importe os metadados de partição. Para tabelas particionadas, execute MSCK REPAIR TABLE para detectar e registrar partições a partir do caminho do OSS. Para mais detalhes, consulte Preencher partições para uma tabela externa do OSS.

    MSCK REPAIR TABLE test_delta_pt ADD PARTITIONS;
  4. Consulte a tabela.

    SELECT * FROM test_delta_pt WHERE dt='20250612';