Todos os produtos
Search
Central de documentação

MaxCompute:Tabelas externas AVRO

Última atualização: Jun 26, 2026

O MaxCompute lê e grava arquivos no formato Avro armazenados no Object Storage Service (OSS) por meio de tabelas externas, sem mover os dados para o armazenamento interno do MaxCompute.

As tabelas externas Avro permitem:

  • Consultar arquivos Avro no OSS diretamente com SQL

  • Gravar dados do MaxCompute no OSS em formato Avro

  • Particionar dados para filtragem eficiente nas consultas

  • Usar o parser de dados open-source nativo, sem necessidade de código de serialização personalizado

Limitações

Restrição

Detalhe

Propriedade de cluster

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

Tamanho de arquivo individual

Máximo de 2 GB. Divida arquivos maiores que 2 GB antes de criar a tabela externa

Região

O MaxCompute e o OSS devem estar na mesma região

Tipos de dados suportados

A tabela a seguir lista os tipos de dados do MaxCompute compatíveis com tabelas externas Avro. Para a referência completa de tipos, consulte Tipos de dados (V1.0) e Tipos de dados (V2.0).

Tipo de dado

Suportado

STRING

Sim

INT

Sim

FLOAT

Sim

DOUBLE

Sim

BOOLEAN

Sim

ARRAY

Sim

MAP

Sim

TINYINT

Não

SMALLINT

Não

BIGINT

Não

BINARY

Não

DECIMAL(precision,scale)

Não

VARCHAR(n)

Não

CHAR(n)

Não

DATE

Não

DATETIME

Não

TIMESTAMP

Não

TIMESTAMP_NTZ

Não

STRUCT

Não

JSON

Não

Crie uma tabela externa Avro

Sintaxe

CREATE EXTERNAL TABLE <mc_oss_extable_name>
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED AS avro
LOCATION '<oss_location>';

Parâmetros

Para obter descrições dos parâmetros, consulte Parâmetros de sintaxe básica.

Gravar dados

Para consultar a sintaxe de gravação, veja Gravar dados no OSS.

Consulta e análise

Exemplo: crie, grave e consulte uma tabela externa Avro

Este exemplo demonstra como criar uma tabela externa Avro particionada, importar metadados de partição, ler dados e gravar uma nova linha.

Pré-requisitos

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

O MaxCompute cria pastas automaticamente no OSS. Se uma instrução SQL envolver tabelas externas e funções definidas pelo usuário (UDFs), uma única instrução poderá ler e gravar nas tabelas enquanto aplica as UDFs.

Etapa 1: Carregar dados de teste

Faça login no console do OSS e carregue o arquivo de dados de teste 20250612TableSink na pasta external-table-test/avro/dt=20250521/ do seu bucket. Para instruções de upload, consulte Carregar arquivos.

Etapa 2: Crie uma tabela externa Avro

CREATE EXTERNAL TABLE mc_oss_extable_name_avro_pt
(
  vehicleId STRING,
  recordId STRING,
  patientId STRING,
  calls STRING,
  locationLatitute STRING,
  locationLongtitue STRING,
  recordTime STRING,
  direction STRING
)
PARTITIONED BY (dt STRING)
STORED AS avro
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/external-table-test/avro/';

Etapa 3: Importar metadados de partição

Para tabelas externas particionadas, execute MSCK REPAIR TABLE para registrar as partições existentes do OSS no MaxCompute:

MSCK REPAIR TABLE mc_oss_extable_name_avro_pt ADD PARTITIONS;

Etapa 4: Ler dados da tabela externa Avro

SELECT * FROM mc_oss_extable_name_avro_pt WHERE dt=20250521;

Resultado retornado:

+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime | direction  | dt         |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| 1          | 12         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20250521   |
| 1          | 1          | 51         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          | 20250521   |
| 1          | 2          | 13         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:01 | NE         | 20250521   |
| 1          | 3          | 48         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:02 | NE         | 20250521   |
| 1          | 4          | 30         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:03 | W          | 20250521   |
| 1          | 5          | 47         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:04 | S          | 20250521   |
| 1          | 6          | 9          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:05 | S          | 20250521   |
| 1          | 7          | 53         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:06 | N          | 20250521   |
| 1          | 8          | 63         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:07 | SW         | 20250521   |
| 1          | 9          | 4          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:08 | NE         | 20250521   |
| 1          | 10         | 31         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:09 | N          | 20250521   |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+

Etapa 5: Gravar dados na tabela externa Avro

INSERT INTO mc_oss_extable_name_avro_pt PARTITION (dt='20250521') VALUES ('1','16','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');

Etapa 6: Verifique os dados gravados

SELECT * FROM mc_oss_extable_name_avro_pt WHERE dt=20250521;

Resultado retornado, com a linha recém-inserida (recordId 16) no topo:

+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime | direction  | dt         |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| 1          | 16         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20250521   |
| 1          | 12         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20250521   |
| 1          | 1          | 51         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          | 20250521   |
| 1          | 2          | 13         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:01 | NE         | 20250521   |
| 1          | 3          | 48         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:02 | NE         | 20250521   |
| 1          | 4          | 30         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:03 | W          | 20250521   |
| 1          | 5          | 47         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:04 | S          | 20250521   |
| 1          | 6          | 9          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:05 | S          | 20250521   |
| 1          | 7          | 53         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:06 | N          | 20250521   |
| 1          | 8          | 63         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:07 | SW         | 20250521   |
| 1          | 9          | 4          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:08 | NE         | 20250521   |
| 1          | 10         | 31         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:09 | N          | 20250521   |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+