Todos os produtos
Search
Central de documentação

MaxCompute:Tabelas externas RCFile

Última atualização: Nov 03, 2026

Este tópico descreve como criar, ler e gravar dados em tabelas externas RCFile no Object Storage Service (OSS).

Notas de uso

  • As tabelas externas do OSS não oferecem suporte à propriedade cluster.

  • O tamanho de um único arquivo não pode exceder 2 GB. Divida os arquivos maiores que esse limite.

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

  • Evite caracteres especiais (como espaços) nos nomes de diretórios do OSS, pois isso pode causar falhas nas operações de leitura e gravação posteriores.

Tipos de dados compatíveis

Para informações sobre os tipos de dados do MaxCompute, consulte Data types (Version 1.0) e Data types (Version 2.0).

Tipo de dado

Suporte

Tipo de dado

Suporte

TINYINT

Enabled

STRING

Activated

SMALLINT

Enabled

DATE

Enabled

INT

Activated

DATETIME

Enabled

BIGINT

Activated

TIMESTAMP

Enabled

BINARY

Activated

TIMESTAMP_NTZ

Enabled

FLOAT

Activated

BOOLEAN

Enabled

DOUBLE

Enabled

ARRAY

Enabled

DECIMAL(precision, scale)

Activated

MAP

Enabled

VARCHAR(n)

Enabled

STRUCT

Enabled

CHAR(n)

Activated

JSON

Not enabled

Criar uma tabela externa

Sintaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] mc_oss_rcfile_extable
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
STORED AS rcfile
LOCATION 'oss_location';

Parâmetros

Para obter mais informações, consulte Basic syntax parameters.

Gravar dados

Para saber mais sobre a sintaxe de gravação de dados do MaxCompute para o OSS, consulte OSS external tables.

Consultas e análise

Exemplo

Este exemplo demonstra como criar uma tabela externa RCFile com o analisador de dados open source integrado, gravar dados no OSS e consultá-los.

  1. Pré-requisitos

    • Possuir um Projeto do MaxCompute criado.

    • Ter um bucket e uma pasta no OSS disponíveis. Para mais detalhes, veja Crie um bucket e Gerencie pastas.

      O MaxCompute permite a criação automática de pastas no OSS. Quando uma instrução SQL envolve tabelas externas e funções definidas pelo usuário (UDFs), utilize uma única instrução para ler e gravar dados e executar as UDFs. Crie as pastas manualmente, se necessário.

      O MaxCompute opera apenas em regiões específicas. Para evitar problemas de conexão de dados entre regiões, verifique se o bucket do OSS está na mesma região do seu projeto no MaxCompute.
    • Autorização

      • É necessário ter permissões de acesso ao OSS. Use uma conta da Alibaba Cloud, um usuário do Resource Access Management (RAM) ou uma função do RAM para acessar tabelas externas do OSS. Para detalhes sobre autorização, consulte Authorize access in STS mode for OSS.

      • Você deve ter a permissão CreateTable no projeto do MaxCompute. Saiba mais sobre permissões de tabela em MaxCompute permissions.

  2. Carregue os dados de teste

    Acesse o OSS console e envie o arquivo de dados RCFile para a pasta oss-mc-test/Rcfile/dt=20241223/ no bucket do OSS. Para mais instruções, consulte Upload files to OSS.

  3. Crie uma tabela externa RCFile

    CREATE EXTERNAL TABLE  mc_oss_rcfile_extable
    (
      vehicleId STRING ,
      recordId STRING,
      patientId STRING,
      calls STRING,
      locationLatitute STRING,
      locationLongtitue STRING,
      recordTime STRING,
      direction STRING
    )
    PARTITIONED BY (dt STRING)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
    STORED AS rcfile
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Rcfile/';
  4. Importe os dados de partição. Se a tabela externa do OSS for particionada, importe os dados de partição correspondentes. Para detalhes, veja Syntax for adding partition data to an OSS external table.

    -- Import partition data.
    MSCK REPAIR TABLE mc_oss_rcfile_extable ADD PARTITIONS;
  5. Consulte a tabela externa RCFile.

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20241223;
    
    -- The following result is returned:
    +------------+------------+------------+------------+------------------+-------------------+------------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime       | direction  | dt         | 
    +------------+------------+------------+------------+------------------+-------------------+------------------+------------+------------+
    | 1          | 1          | 7          | 1          | 39.995353        | 116.410101        | 2025/12/23 10:01 | NW         | 20241223   | 
    | 1          | 2          | 15         | 1          | 39.996123        | 116.412345        | 2025/12/24 10:01 | NE         | 20241223   | 
    | 2          | 3          | 22         | 2          | 40.001234        | 116.425678        | 2025/12/25 10:01 | SE         | 20241223   | 
    | 1          | 4          | 71         | 1          | 39.998888        | 106.419999        | 2025/12/26 10:01 | NW         | 20241223   | 
    | 3          | 5          | 50         | 1          | 29.989999        | 116.401111        | 2025/12/27 10:01 | NE         | 20241223   | 
    | 2          | 6          | 28         | 3          | 40.003456        | 110.42891         | 2025/12/28 10:01 | NW         | 20241223   | 
    | 4          | 7          | 20         | 2          | 39.991234        | 116.435555        | 2025/12/29 10:01 | NE         | 20241223   | 
    | 1          | 8          | 13         | 1          | 39.994567        | 116.41789         | 2025/12/30 10:01 | SE         | 20241223   | 
    +------------+------------+------------+------------+------------------+-------------------+------------------+------------+------------+
  6. Grave dados na tabela externa RCFile.

    INSERT INTO TABLE mc_oss_rcfile_extable2_pt PARTITION (dt=20251223) VALUES ('1','13','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');
  7. Verifique se os dados foram gravados com sucesso.

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20250521 AND recordId='13';
    
    -- The following result is returned:
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime     | direction  | dt         | 
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+
    | 1          | 13         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20251223   | 
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+