Todos os produtos
Search
Central de documentação

MaxCompute:Execução local

Última atualização: Jun 26, 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 implantar novamente no cluster a cada alteração de 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. Baixe os metadados e os dados da tabela de entrada, os metadados da tabela de saída e quaisquer recursos necessários do MaxCompute para um diretório local chamado warehouse.

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

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

Nas execuções seguintes, 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 ocorre 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 Limites do MapReduce)

Segurança

Sem restrições

Sandbox Java aplicável a MapReduce e funções definidas pelo usuário (UDFs)

Execute 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 ver o código completo do exemplo WordCount, consulte WordCount.

Etapa 2: Verifique a saída

Uma execução bem-sucedida imprime 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: Valide os resultados no diretório warehouse

A primeira execução cria um diretório warehouse 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 de my_project representam projetos.

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

Valide 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 parte dos dados da tabela do MaxCompute e os salvou nesses arquivos. A próxima execução lerá diretamente de wc_in, sem necessidade de download.

Valide os dados de saída wc_out

O esquema 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 de esquema

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 da 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 um diretório de tabela já existe em warehouse, ele ignora o download dessa tabela. Isso significa que um diretório de tabela local pode referenciar uma tabela inexistente no MaxCompute.

Próximos passos

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

  • Limites do MapReduce — tamanho de recurso e outros limites aplicáveis ao modo distribuído