すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:MapReduce の開発

最終更新日:Aug 22, 2026

このトピックでは、MaxCompute Studio で MapReduce プログラムを開発する方法について説明します。このプロセスには、MapReduce プログラムの作成、デバッグ、パッケージ化、アップロード、および実行が含まれます。

前提条件

次の前提条件を満たす必要があります。

MapReduce の作成

  1. [プロジェクト] ペインで、モジュールのソースコードディレクトリ (つまり src > main > java) を右クリックし、[New] > [MaxCompute Java] を選択します。

  2. [Name] を入力し、クラスタイプとして [ドライバー] を選択してから、Enter キーを押します。

    • [Name]: MaxCompute Java クラスの名前。パッケージを作成していない場合は、packagename.classname の形式で名前を入力すると、パッケージが自動的に作成されます。

    • クラスタイプの選択: [ドライバー][マッパー]、または [リデューサー]

      説明

      適切なクラスタイプを選択してください。

      • [ドライバー]: MapReduce ジョブのドライバークラス。ジョブの構成と送信を行います。ドライバー内でマッパーとリデューサーのクラス、およびその他の構成の詳細を指定できます。これがジョブのエントリポイントとなります。

      • [マッパー]: MapReduce データ処理の最初の段階。各入力レコードを処理し、中間キーと値のペアを生成します。

      • [リデューサー]: マッパーからの中間キーと値のペアを受け取り、処理して最終的な出力を生成します。出力は MaxCompute テーブルに保存されます。

  3. クラスを作成した後、エディターで Java コードを記述します。

    MaxCompute Studio は、Java テンプレートにフレームワークコードを自動的に入力します。入力テーブル、出力テーブル、マッパーとリデューサーのクラスなどの設定を構成するだけで済みます。

    package mymr.myudf;
    
    import ...
    
    public class HelloDriver {
    
        public static void main(String[] args) throws OdpsException {
    
            JobConf job = new JobConf();
    
            // TODO: マップ出力タイプを指定
            job.setMapOutputKeySchema(SchemaUtils.fromString(?));
            job.setMapOutputValueSchema(SchemaUtils.fromString(?));
    
            // TODO: 入力テーブルと出力テーブルを指定
            InputUtils.addTable(TableInfo.builder().tableName(?).build(), job);
            OutputUtils.addTable(TableInfo.builder().tableName(?).build(), job);
    
            // TODO: マッパーを指定
            job.setMapperClass(?);
            // TODO: リデューサーを指定
            job.setReducerClass(?);
    
            RunningJob rj = JobClient.runJob(job);
            rj.waitForCompletion();
    
        }
    }

ローカル実行によるデバッグ

ローカル実行を使用して MapReduce プログラムをテストし、出力が期待どおりであることを確認します。

  1. 完成した Java ファイルを右クリックし、[Run] を選択します。

  2. [Run/Debug Configurations] ダイアログボックスで、この実行の MaxCompute プロジェクトを選択します。

    [Run/Debug Configurations] ダイアログボックスで、左側のペインの JUnit の下にある [WordCountTest] を選択します。右側の構成ペインで、Test kind を [Class] に設定し、Class フィールドに com.aliyun.odps.examples.mr.test.WordCountTest を入力し、Use classpath of module を [MyFirstModule] に設定します。

  3. [OK] をクリックして実行を開始します。

    説明
    • システムは、ローカル実行中の入力として warehouse 内の指定されたテーブルからデータを読み取ります。 コンソールでログ出力を表示できます。

単体テストによるデバッグ

examples ディレクトリ内の WordCount ユニットテストの例を参照して、テストケースを記述できます。

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

import ...

public class WordCountTest extends M...

    // 入力テーブルと出力テーブルのスキーマを定義
    private final static String INPUT_...
    private final static String OUTPUT_...
    private JobConf job;

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

        // ジョブを構成
        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_...

        // テストデータを準備
        Record record = mapContext.createIn...
        record.set(new Text[] {new Text(...

パッケージ化とアップロード

プログラムをデバッグした後、JAR ファイルにパッケージ化し、リソースとして MaxCompute にアップロードします。詳細については、「Java プログラムをパッケージ化、アップロード、登録する」をご参照ください。

MapReduce の実行

MaxCompute クライアントで MapReduce プログラムを実行します。

  1. 左側メニューで [Project Explorer] をクリックします。

  2. プロジェクト名を右クリックし、[Open in Console] を選択します。

  3. [Console] ペインで、次のコマンドを実行して MapReduce ジョブを実行します。

    コマンドの詳細については、「JAR コマンド」をご参照ください。

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