Tous les produits
Search
Centre de documentation

MaxCompute:Développer MapReduce

Dernière mise à jour :Aug 21, 2026

Cette rubrique explique comment développer un programme MapReduce dans MaxCompute Studio. Le processus comprend l'écriture, le débogage, l'empaquetage, le chargement et l'exécution d'un programme MapReduce.

Prérequis

Assurez-vous de remplir les conditions préalables suivantes :

Écrire un programme MapReduce

  1. Dans le volet Project, cliquez avec le bouton droit sur le répertoire du code source du module (c'est-à-dire src > main > java), puis sélectionnez New > MaxCompute Java.

  2. Saisissez un Name, sélectionnez Driver comme type de classe, puis appuyez sur Entrée.

    • Name : nom de la classe Java MaxCompute. Si vous n'avez pas encore créé de package, saisissez le nom au format packagename.classname pour créer automatiquement un package.

    • Sélectionnez le type de classe : Driver, Mapper ou Reducer.

      Remarque

      Sélectionnez le type de classe approprié :

      • Driver : classe pilote de la tâche MapReduce. Elle configure et soumet la tâche. Vous pouvez spécifier les classes Mapper et Reducer ainsi que d'autres détails de configuration au sein du pilote. Il s'agit du point d'entrée de la tâche.

      • Mapper : première étape du traitement des données MapReduce. Il traite chaque enregistrement d'entrée et génère une paire clé-valeur intermédiaire.

      • Reducer : reçoit les paires clé-valeur intermédiaires du Mapper, les traite et produit la sortie finale. La sortie est ensuite enregistrée dans une table MaxCompute.

  3. Après avoir créé la classe, rédigez votre code Java dans l'éditeur.

    MaxCompute Studio remplit automatiquement le modèle Java avec le code framework. Il vous suffit de configurer les paramètres tels que la table d'entrée, la table de sortie et les classes Mapper et 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();
    
        }
    }

Déboguer avec une exécution locale

Utilisez une exécution locale pour tester votre programme MapReduce et vérifier que la sortie correspond à vos attentes.

  1. Cliquez avec le bouton droit sur le fichier Java terminé et sélectionnez Run.

  2. Dans la boîte de dialogue Run/Debug Configurations, sélectionnez le projet MaxCompute pour cette exécution.

    Dans la boîte de dialogue Run/Debug Configurations, sélectionnez WordCountTest sous JUnit dans le volet de gauche. Dans le volet de configuration à droite, définissez Test kind sur Class, saisissez com.aliyun.odps.examples.mr.test.WordCountTest dans le champ Class et définissez Use classpath of module sur MyFristModule.

  3. Cliquez sur OK pour lancer l'exécution.

    Remarque
    • Le système lit les données de la table spécifiée dans warehouse en tant qu'entrée lors de l'exécution locale. Vous pouvez consulter la sortie des journaux dans la console.

Déboguer avec des tests unitaires

Inspirez-vous de l'exemple de test unitaire WordCount situé dans le répertoire examples pour rédiger vos cas de test.

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

Empaqueter et charger

Après avoir débogué votre programme, empaquetez-le dans un fichier JAR et chargez-le sur MaxCompute en tant que ressource. Pour plus d'informations, reportez-vous à la rubrique Empaqueter, charger et enregistrer un programme Java.

Exécuter MapReduce

Exécutez le programme MapReduce sur le client MaxCompute.

  1. Dans le volet de navigation de gauche, cliquez sur Project Explorer.

  2. Cliquez avec le bouton droit sur le nom du projet et sélectionnez Open in Console.

  3. Dans le volet Console, exécutez la commande suivante pour lancer la tâche MapReduce.

    Pour plus d'informations sur les commandes, reportez-vous à la rubrique Commandes JAR.

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