Todos os produtos
Search
Central de documentação

MaxCompute:Hudi external tables

Última atualização: Jun 27, 2026

Este tópico descreve como criar, ler e gravar dados em tabelas externas do OSS no formato Hudi.

Importante

O MaxCompute suporta o recurso de tabela externa apenas na versão publicada do kit de desenvolvimento de software (SDK) do Hudi. Não haverá novas atualizações de versão nem melhorias de recursos. Use tabelas externas do Paimon para ler dados em formatos de tabela de data lake.

Limitações

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

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

  • O tamanho máximo de um único arquivo é 2 GB. Divida os arquivos que excederem esse limite antes da leitura.

  • O MaxCompute e o Object Storage Service (OSS) devem estar na mesma região.

  • As tabelas externas do Hudi permitem apenas a leitura completa dos dados dos arquivos mapeados. As seguintes operações não têm suporte:

    • Ocultação automática de colunas do sistema

    • Leituras incrementais

    • Leituras de snapshot

    • Operações de gravação

  • Para operações que exigem atomicidade, consistência, isolamento e durabilidade (ACID), use tabelas Delta do MaxCompute ou tabelas externas do Paimon.

  • A versão padrão do SDK do Hudi integrada ao MaxCompute é org.apache.hudi:hudi-hadoop-mr-bundle:0.12.2-emr-1.0.6. O MaxCompute não garante compatibilidade futura ou retroativa do SDK do Hudi. A comunidade open source é responsável pela compatibilidade.

  • Em tabelas externas particionadas, execute MSCK REPAIR TABLE <table_name> ADD PARTITIONS; após criar a tabela para registrar as partições existentes no OSS no MaxCompute. Consultas em tabelas particionadas não retornam dados até a conclusão dessa etapa.

Tipos de dados suportados

Para obter a referência completa de tipos, consulte Tipos de dados (Versão 1,0) e Tipos de dados (Versão 2,0).

Tipo de dado

Suporte

Tipo de dado

Suporte

TINYINT

STRING

SMALLINT

DATE

INT

DATETIME

BIGINT

TIMESTAMP

BINARY

TIMESTAMP_NTZ

FLOAT

BOOLEAN

DOUBLE

ARRAY

DECIMAL(precision,scale)

MAP

VARCHAR(n)

STRUCT

CHAR(n)

JSON

Crie 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 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'oss_location';

Use os valores de INPUTFORMAT, OUTPUTFORMAT e ROW FORMAT SERDE exatamente como mostrado. Para descrições de outros parâmetros, consulte Parâmetros básicos de sintaxe.

Consultar dados

Exemplo

Este exemplo cria uma tabela externa particionada do Hudi, registra suas partições e consulta os dados.

Pré-requisitos

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

  • Um projeto do MaxCompute

  • Um bucket e uma pasta no OSS na mesma região do projeto do MaxCompute. Para criar um bucket, consulte Criar um bucket. Para criar uma pasta, consulte Gerencie pastas. O MaxCompute também permite criar pastas automaticamente no OSS.

  • Permissões de acesso ao OSS concedidas a uma conta Alibaba Cloud, a um usuário do Resource Access Management (RAM) ou a uma função do RAM. Para mais detalhes, consulte Autorizar acesso no modo STS para o OSS

  • A permissão CreateTable no projeto do MaxCompute. Para mais detalhes, consulte Permissões do MaxCompute

Etapa 1: Carregar dados de teste

Faça login no console do OSS e carregue o arquivo de dados de teste formatado em Hudi na pasta oss-mc-test/Demo_hudi_pt/dt=20250612/. Para mais detalhes, consulte Carregar arquivos no OSS.

Etapa 2: Criar uma tabela externa do Hudi

Execute a instrução a seguir para criar uma tabela externa particionada do Hudi mapeada para o local do OSS:

CREATE EXTERNAL TABLE vehicle_hudi_pt (
  _hoodie_commit_time  string,
  _hoodie_commit_seqno string,
  _hoodie_record_key string,
  _hoodie_partition_path string,
  _hoodie_file_name STRING,
  id STRING,
  name STRING
)
PARTITIONED BY (ds STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo_hudi_pt/';

Etapa 3: Registrar partições

Após criar uma tabela externa particionada, registre as partições do OSS no MaxCompute. Sem essa etapa, as consultas não retornam dados.

MSCK REPAIR TABLE vehicle_hudi_pt ADD PARTITIONS;

Para a sintaxe completa de partição, consulte Sintaxe para adicionar dados de partição a uma tabela externa do OSS.

Etapa 4: Consultar a tabela

SELECT * FROM vehicle_hudi_pt WHERE ds='20250612';