All Products
Search
Document Center

MaxCompute:Kembangkan MapReduce

Last Updated:Aug 22, 2026

Topik ini menjelaskan cara mengembangkan program MapReduce di MaxCompute Studio, mencakup penulisan, debugging, pengemasan, pengunggahan, dan eksekusi program MapReduce.

Prasyarat

Anda harus memenuhi prasyarat berikut:

Tulis MapReduce

  1. Di panel Project, klik kanan direktori kode sumber modul (yaitu, src > main > java), lalu pilih New > MaxCompute Java.

  2. Masukkan Name, pilih Driver sebagai tipe kelas, lalu tekan Enter.

    • Name: Nama kelas Java MaxCompute. Jika Anda belum membuat package, masukkan nama dalam format packagename.classname untuk membuat package secara otomatis.

    • Pilih tipe kelas: Driver, Mapper, atau Reducer.

      Catatan

      Pilih tipe kelas yang sesuai:

      • Driver: Kelas driver untuk pekerjaan MapReduce. Kelas ini mengonfigurasi dan mengirimkan pekerjaan. Anda dapat menentukan kelas Mapper dan Reducer serta detail konfigurasi lainnya di dalam driver. Ini merupakan titik masuk pekerjaan.

      • Mapper: Tahap pertama pemrosesan data MapReduce. Mapper memproses setiap record input dan menghasilkan pasangan kunci-nilai antara.

      • Reducer: Menerima pasangan kunci-nilai antara dari Mapper, memprosesnya, dan menghasilkan output akhir. Output tersebut kemudian disimpan ke tabel MaxCompute.

  3. Setelah membuat kelas, tulis kode Java Anda di editor.

    MaxCompute Studio secara otomatis mengisi templat Java dengan kode kerangka. Anda hanya perlu mengonfigurasi pengaturan seperti tabel input, tabel output, serta kelas Mapper dan 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();
    
        }
    }

Debug dengan local run

Gunakan local run untuk menguji program MapReduce Anda dan memverifikasi bahwa output sesuai harapan.

  1. Klik kanan file Java yang telah selesai dan pilih Run.

  2. Di kotak dialog Run/Debug Configurations, pilih proyek MaxCompute untuk eksekusi ini.

    Di kotak dialog Run/Debug Configurations, pilih WordCountTest di bawah JUnit pada panel kiri. Di panel konfigurasi sebelah kanan, atur Test kind menjadi Class, masukkan com.aliyun.odps.examples.mr.test.WordCountTest di bidang Class, dan atur Use classpath of module menjadi MyFristModule.

  3. Klik OK untuk memulai eksekusi.

    Catatan
    • Sistem membaca data dari tabel yang ditentukan di direktori warehouse sebagai input selama local run. Anda dapat melihat output log di konsol.

Debug dengan pengujian unit

Anda dapat merujuk contoh pengujian unit WordCount di direktori examples untuk menulis kasus uji.

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

Pengemasan dan pengunggahan

Setelah melakukan debugging pada program Anda, kemas program tersebut ke dalam file JAR dan unggah ke MaxCompute sebagai resource. Untuk informasi selengkapnya, lihat Kemas, unggah, dan daftarkan program Java.

Jalankan MapReduce

Jalankan program MapReduce pada klien MaxCompute.

  1. Di panel navigasi kiri, klik Project Explorer.

  2. Klik kanan nama proyek dan pilih Open in Console.

  3. Di panel Console, jalankan perintah berikut untuk menjalankan pekerjaan MapReduce.

    Untuk informasi selengkapnya tentang perintah, lihat Perintah JAR.

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