Todos os produtos
Search
Central de documentação

MaxCompute:Execução local

Última atualização: Sep 20, 2026

O modo local permite depurar um job MapReduce na sua máquina antes de enviá-lo a um cluster distribuído. Em vez de reimplantar no cluster a cada alteração no código, execute o job localmente com a flag -local e inspecione os resultados imediatamente.

Como funciona

Adicione a flag -local ao comando jar para executar o job localmente. O cliente MaxCompute:

  1. Baixa os metadados e os dados da tabela de entrada, os metadados da tabela de saída e os recursos necessários do MaxCompute para um diretório local chamado warehouse.

  2. Executa múltiplas tarefas map e reduce em sequência (não em paralelo).

  3. Grava os resultados em um arquivo no diretório warehouse.

Nas execuções subsequentes, se a tabela de entrada e os recursos já estiverem em warehouse, o cliente os lê diretamente — sem novo download.

Nota

O download de dados do MaxCompute está disponível apenas para jobs MapReduce executados em modo local.

Modo local vs. modo distribuído

Dimensão

Modo local

Modo distribuído

Linhas de entrada

Máximo de 100 linhas

Sem limite

Tamanho do recurso

Sem limite

Limitado (consulte MapReduce limits)

Segurança

Sem restrições

O sandbox Java se aplica ao MapReduce e às funções definidas pelo usuário (UDFs)

Executar um job em modo local

O exemplo a seguir executa o programa WordCount na tabela wc_in e grava a saída em wc_out.

Etapa 1: Execute o comando jar

odps:my_project> jar -l com.aliyun.odps.mapred.example.WordCount wc_in wc_out

Para o código de exemplo completo do WordCount, consulte WordCount.

Etapa 2: Verifique a saída

Uma execução bem-sucedida exibe um resumo com contadores:

Summary:
counters: 10
    map-reduce framework
            combine_input_groups=2
            combine_output_records=2
            map_input_bytes=4
            map_input_records=1
            map_output_records=2
            map_output_[wc_out]_bytes=0
            map_output_[wc_out]_records=0
            reduce_input_groups=2
            reduce_output_[wc_out]_bytes=8
            reduce_output_[wc_out]_records=2
OK

Etapa 3: Verifique os resultados no diretório warehouse

Na primeira execução, um diretório warehouse é criado no caminho atual com a seguinte estrutura:

<warehouse>
   |____my_project (project directory)
          |____ <__tables__>
          |       |__wc_in (table data directory)
          |       |      |____ data (file)
          |       |      |
          |       |      |____ <__schema__> (file)
          |       |__wc_out (table data directory)
          |               |____ data (file)
          |               |
          |               |____ <__schema__> (file)
          |
          |____ <__resources__>
                  |
                  |___table_resource_name (table resource)
                  |         |____<__ref__>
                  |
                  |___ file_resource_name (file resource)
  • Diretórios no mesmo nível que my_project representam projetos.

  • Diretórios no mesmo nível que wc_in e wc_out representam tabelas de dados. Os dados lidos ou gravados pelo comando jar ficam armazenados neste nível.

Verificar os dados de entrada wc_in

O arquivo <__schema__> armazena os metadados da tabela. Para wc_in:

my_project.wc_in,key:STRING,value:STRING

O arquivo data contém as linhas baixadas:

0,2

O cliente baixou os metadados e uma parte dos dados da tabela do MaxCompute e os salvou nesses arquivos. A próxima execução lê diretamente de wc_in — sem necessidade de novo download.

Verificar os dados de saída wc_out

O schema de wc_out:

my_project.wc_out,key:STRING,cnt:BIGINT

Após a conclusão do job, o arquivo data contém os resultados:

0,1
2,1

Formato do arquivo schema

O arquivo <__schema__> define a estrutura da tabela:

project=local_project_name
table=local_table_name
columns=col1_name:col1_type,col2_name:col2_type
partitions=p1:STRING,p2:BIGINT    -- optional

Regras de formatação:

  • Separe o nome de uma coluna e seu tipo com dois-pontos (:).

  • Separe as colunas com vírgula (,).

  • Declare project_name.table_name no início do arquivo, separado das definições de colunas por vírgula. Exemplo: project_name.table_name,col1_name:col1_type,col2_name:col2_type

Observações de uso

  • Edite os arquivos <__schema__> e data diretamente para fornecer dados de teste personalizados sem precisar baixar do MaxCompute.

  • Se o cliente detectar que o diretório de uma tabela já existe em warehouse, o download dessa tabela é ignorado. Isso significa que um diretório de tabela local pode referenciar uma tabela inexistente no MaxCompute.

Próximas etapas

  • WordCount — código de exemplo completo do WordCount utilizado neste tópico

  • MapReduce limits — tamanho de recursos e outros limites aplicáveis no modo distribuído