Todos los productos
Search
Centro de documentos

MaxCompute:Desarrollar una tarea de MapReduce en MaxCompute

Última actualización: Sep 25, 2026

Cree un nodo ODPS MR para escribir y programar programas MapReduce que procesen datos en MaxCompute mediante las API de Java de MapReduce.

Requisitos previos

Importante

Debe cargar, enviar y publicar los recursos obligatorios antes de crear un nodo ODPS MR.

Contexto

MapReduce es un framework de programación distribuida que combina la lógica de negocio escrita por el usuario con componentes integrados para ejecutarse de forma concurrente en un clúster de Hadoop. MaxCompute ofrece dos versiones de la interfaz de programación de MapReduce. Para obtener más información, consulte MapReduce.

  • MaxCompute MapReduce: es la interfaz nativa de MaxCompute. Permite una ejecución rápida y un desarrollo ágil sin exponer el sistema de archivos.

  • Extended MaxCompute MapReduce (MR2): es una extensión de MaxCompute MapReduce que admite una lógica de programación de trabajos más compleja. Su implementación es igual a la de la interfaz nativa.

En DataWorks, utilice un nodo ODPS MR para programar y ejecutar tareas de MaxCompute MapReduce e integrarlas con otros trabajos.

Límites

Para conocer los límites de los nodos ODPS MR, consulte Usage limits.

Ejemplo: un trabajo WordCount sencillo

Este ejemplo utiliza un nodo ODPS MR para contar las apariciones de cada cadena en la tabla wc_in y escribir los resultados en la tabla wc_out.

  1. Cargue, envíe y publique el recurso mapreduce-examples.jar. Para obtener más información, consulte Create and use MaxCompute resources.

    Nota

    Para obtener más información sobre la lógica de implementación dentro del paquete mapreduce-examples.jar, consulte WordCount example.

  2. Introduzca el siguiente código en el nodo ODPS MR y ejecútelo.

    -- Create the input table.
    CREATE TABLE if not exists wc_in (key STRING, value STRING);
    -- Create the output table.
    CREATE TABLE if not exists wc_out (key STRING, cnt BIGINT);
        --- Create the system dual table.
        drop table if exists dual;
        create table dual(id bigint); -- If this pseudo-table does not exist in the workspace, you must create it and initialize data.
        --- Initialize the data in the system pseudo-table.
        insert overwrite table dual select count(*)from dual;
        --- Insert sample data into the input table wc_in.
        insert overwrite table wc_in select * from (
        select 'project','val_pro' from dual 
        union all 
        select 'problem','val_pro' from dual
        union all 
        select 'package','val_a' from dual
        union all 
        select 'pad','val_a' from dual
          ) b;
    -- Reference the JAR resource that you just uploaded. You can find this resource in the resource list, right-click the resource, and then select Reference Resources.
    --@resource_reference{"mapreduce-examples.jar"}
    jar -resources mapreduce-examples.jar -classpath ./mapreduce-examples.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out

    El código incluye las siguientes instrucciones y parámetros:

    • --@resource_reference: haga clic con el botón secundario en el nombre de un recurso y seleccione Insert Resource Path para generar esta instrucción automáticamente.

    • -resources: el nombre del archivo del recurso JAR al que se hace referencia.

    • -classpath: la ruta al paquete JAR. Dado que el recurso ya está referenciado, la ruta apunta al archivo JAR en el directorio actual (./).

    • com.aliyun.odps.mapred.open.example.WordCount: el nombre completo de la clase principal que se va a ejecutar desde el archivo JAR.

    • wc_in: el nombre de la tabla de entrada del trabajo de MapReduce. Esta tabla se crea en el código anterior.

    • wc_out: el nombre de la tabla de salida del trabajo de MapReduce. Esta tabla se crea en el código anterior.

    • Si un trabajo de MapReduce requiere varios recursos JAR, separe las rutas con una coma; por ejemplo, -classpath ./xxxx1.jar,./xxxx2.jar.

    Resultado: OK

  3. En un nodo ODPS SQL, ejecute el siguiente comando para consultar los datos de la tabla wc_out.

    select * from wc_out;

    Salida esperada:

    +------------+------------+
    | key        | cnt        |
    +------------+------------+
    | package    | 1          |
    | pad        | 1          |
    | problem    | 1          |
    | project    | 1          |
    | val_a      | 2          |
    | val_pro    | 2          |
    +------------+------------+

Ejemplos avanzados

Para conocer más escenarios de desarrollo de tareas de MapReduce en MaxCompute, consulte los siguientes temas:

Pasos siguientes

Una vez desarrollado el nodo, lleve a cabo las siguientes operaciones según sea necesario:

  • Configuración de programación: configure propiedades de programación periódica, como los ajustes de reejecución y las dependencias, para las tareas que se ejecutan de forma regular. Overview of task scheduling configuration.

  • Depuración de tareas: pruebe y ejecute el código del nodo para comprobar su lógica. Task debugging process.

  • Despliegue de tareas: despliegue los nodos para ejecutarlos de forma periódica según sus configuraciones de programación. Deploy tasks.

  • MapReduce FAQ: problemas comunes y solución de problemas de las tareas de MapReduce.