Todos os produtos
Search
Central de documentação

MaxCompute:Desenvolver MapReduce

Última atualização: Aug 21, 2026

Este tópico descreve como desenvolver um programa MapReduce no MaxCompute Studio. O processo inclui escrever, depurar, empacotar, fazer upload e executar um programa MapReduce.

Pré-requisitos

Você deve atender aos seguintes pré-requisitos:

Escrever o MapReduce

  1. No painel Project, clique com o botão direito no diretório de source code do módulo (ou seja, src > main > java) e selecione New > MaxCompute Java.

  2. Insira um Name, selecione Driver como tipo de classe e pressione Enter.

    • Name: Nome da classe Java do MaxCompute. Caso ainda não tenha criado um pacote, insira o nome no formato packagename.classname para criar um pacote automaticamente.

    • Selecione o tipo de classe: Driver, Mapper ou Reducer.

      Nota

      Escolha o tipo de classe apropriado:

      • Driver: Classe driver do job MapReduce. Ela configura e envia o job. É possível especificar as classes Mapper e Reducer, além de outros detalhes de configuração, dentro do driver. Trata-se do ponto de entrada do job.

      • Mapper: Primeira etapa do processamento de dados do MapReduce. Processa cada registro de entrada e gera um par chave-valor intermediário.

      • Reducer: Recebe os pares chave-valor intermediários do Mapper, processa-os e produz a saída final. A saída é então salva em uma tabela do MaxCompute.

  3. Após criar a classe, escreva seu código Java no editor.

    O MaxCompute Studio preenche automaticamente o modelo Java com o código do framework. Basta configurar definições como tabela de entrada, tabela de saída e as classes Mapper e Reducer.

    package mymr.myudf;
    
    import ...
    
    public class HelloDriver {
    
        public static void main(String[] args) throws OdpsException {
    
            JobConf job = new JobConf();
    
            // TODO: specify map output types
            job.setMapOutputKeySchema(SchemaUtils.fromString(?));
            job.setMapOutputValueSchema(SchemaUtils.fromString(?));
    
            // TODO: specify input and output tables
            InputUtils.addTable(TableInfo.builder().tableName(?).build(), job);
            OutputUtils.addTable(TableInfo.builder().tableName(?).build(), job);
    
            // TODO: specify a mapper
            job.setMapperClass(?);
            // TODO: specify a reducer
            job.setReducerClass(?);
    
            RunningJob rj = JobClient.runJob(job);
            rj.waitForCompletion();
    
        }
    }

Depurar com execução local

Utilize uma execução local para testar seu programa MapReduce e verifique se a saída atende às suas expectativas.

  1. Clique com o botão direito no arquivo Java concluído e selecione Run.

  2. Na caixa de diálogo Run/Debug Configurations, selecione o projeto do MaxCompute para esta execução.

    Na caixa de diálogo Run/Debug Configurations, selecione WordCountTest em JUnit no painel à esquerda. No painel de configuração à direita, defina Test kind como Class, insira com.aliyun.odps.examples.mr.test.WordCountTest no campo Class e defina Use classpath of module como MyFristModule.

  3. Clique em OK para iniciar a execução.

    Nota
    • Durante a execução local, o sistema lê dados da tabela especificada em warehouse como entrada. É possível visualizar a saída de log no console.

Depurar com testes de unidade

Consulte o exemplo de teste de unidade WordCount no diretório examples para escrever seus casos de teste.

package com.aliyun.odps.examples.mr.test;

import ...

public class WordCountTest extends M...

    // Define the schemas of the input and output tables
    private final static String INPUT_...
    private final static String OUTPUT_...
    private JobConf job;

    public WordCountTest() throws Excep...
        TestUtil.initWarehouse();

        // Configure the job
        job = new JobConf();

        job.setMapperClass(WordCount_Token...
        job.setCombinerClass(WordCount_Sum...
        job.setReducerClass(WordCount_SumR...

        job.setMapOutputKeySchema(SchemaUti...
        job.setMapOutputValueSchema(SchemaU...

        InputUtils.addTable(TableInfo.build...
        OutputUtils.addTable(TableInfo.buil...
    }

    @SuppressWarnings("deprecation")
    @Test
    public void testMap() throws IOExce...
        MapUTContext mapContext = new MapUT...
        mapContext.setInputSchema(INPUT_SC...
        mapContext.setOutputSchema(OUTPUT_...

        // Prepare the test data
        Record record = mapContext.createIn...
        record.set(new Text[] {new Text(...

Empacotar e fazer upload

Após depurar seu programa, empacote-o em um arquivo JAR e faça o upload para o MaxCompute como um resource. Para mais informações, consulte Empacote, faça upload e registre um programa Java.

Executar o MapReduce

Execute o programa MapReduce no cliente do MaxCompute.

  1. No painel de navegação à esquerda, clique em Project Explorer.

  2. Clique com o botão direito no nome do projeto e selecione Open in Console.

  3. No painel Console, execute o comando a seguir para rodar o job MapReduce.

    Para mais informações sobre comandos, consulte Comandos JAR.

    jar -resources wordcount.jar -classpath D:\odps\clt\wordcount.jar com.aliyun.odps.examples.mr.WordCount wc_in wc_out;