Todos los productos
Search
Centro de documentos

MaxCompute:Desarrollar MapReduce

Última actualización: Sep 04, 2026

Este tema describe cómo desarrollar un programa MapReduce en MaxCompute Studio. El proceso incluye escribir, depurar, empaquetar, cargar y ejecutar un programa MapReduce.

Requisitos previos

Debe cumplir con los siguientes requisitos previos:

Escribir MapReduce

  1. En el panel Project, haga clic derecho en el directorio de código fuente del módulo (es decir, src > main > java) y seleccione New > MaxCompute Java.

  2. Introduzca un Name, seleccione Driver como tipo de clase y presione Enter.

    • Name: El nombre de la clase Java de MaxCompute. Si no ha creado un paquete, introduzca el nombre con el formato packagename.classname para crear un paquete automáticamente.

    • Seleccione el tipo de clase: Driver, Mapper o Reducer.

      Nota

      Seleccione el tipo de clase adecuado:

      • Driver: La clase controladora del trabajo MapReduce. Configura y envía el trabajo. Puede especificar las clases Mapper y Reducer, así como otros detalles de configuración dentro del controlador. Es el punto de entrada del trabajo.

      • Mapper: La primera etapa del procesamiento de datos MapReduce. Procesa cada registro de entrada y genera un par clave-valor intermedio.

      • Reducer: Recibe los pares clave-valor intermedios del Mapper, los procesa y produce la salida final. Posteriormente, la salida se guarda en una tabla de MaxCompute.

  3. Después de crear la clase, escriba su código Java en el editor.

    MaxCompute Studio rellena automáticamente la plantilla Java con el código del framework. Solo necesita configurar ajustes como la tabla de entrada, la tabla de salida y las clases Mapper y 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 con una ejecución local

Utilice una ejecución local para probar su programa MapReduce y comprobar que la salida cumple con sus expectativas.

  1. Haga clic derecho en el archivo Java completado y seleccione Run.

  2. En el cuadro de diálogo Run/Debug Configurations, seleccione el proyecto de MaxCompute para esta ejecución.

    En el cuadro de diálogo Run/Debug Configurations, seleccione WordCountTest bajo JUnit en el panel izquierdo. En el panel de configuración de la derecha, establezca Test kind en Class, introduzca com.aliyun.odps.examples.mr.test.WordCountTest en el campo Class y establezca Use classpath of module en MyFristModule.

  3. Haga clic en OK para iniciar la ejecución.

    Nota
    • El sistema lee los datos de la tabla especificada en warehouse como entrada durante la ejecución local. Puede consultar la salida de los registros en la consola.

Depurar con pruebas unitarias

Puede consultar el ejemplo de prueba unitaria WordCount en el directorio examples para escribir casos de prueba.

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(...

Empaquetar y cargar

Después de depurar su programa, empáquelo en un archivo JAR y cárguelo en MaxCompute como recurso. Para obtener más información, consulte Package, upload, and register a Java program.

Ejecutar MapReduce

Ejecute el programa MapReduce en el cliente de MaxCompute.

  1. En el panel de navegación izquierdo, haga clic en Project Explorer.

  2. Haga clic derecho en el nombre del proyecto y seleccione Open in Console.

  3. En el panel Console, ejecute el siguiente comando para ejecutar el trabajo MapReduce.

    Para obtener más información sobre los comandos, consulte JAR commands.

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