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

DataWorks:MaxCompute MapReduce タスクの開発

最終更新日:Apr 21, 2026

MaxCompute は MapReduce プログラミングインターフェイスを提供します。ODPS MR ノードを作成してスケジューリングのために送信し、MapReduce Java API を使用して MapReduce プログラムを作成し、MaxCompute のデータを処理できます。

前提条件

重要

ODPS MR ノードを作成する前に、必要なリソースをアップロード、送信、公開する必要があります。

背景情報

MapReduce は、分散アプリケーション向けのプログラミングフレームワークです。ユーザーが作成したビジネスロジックと組み込みコンポーネントを組み合わせて、Hadoop クラスター上で同時に実行される完全な分散プログラムを構築します。MaxCompute は、2 つのバージョンの MapReduce プログラミングインターフェイスを提供します。詳細については、「MapReduce」をご参照ください。

  • MaxCompute MapReduce:ネイティブの MaxCompute インターフェイスです。高速な実行、迅速な開発が可能で、ファイルシステムを公開しません。

  • 拡張 MaxCompute MapReduce (MR2):MaxCompute MapReduce の拡張機能で、より複雑なジョブスケジューリングロジックをサポートします。実装はネイティブインターフェイスと同じです。

DataWorks では、ODPS MR ノードを使用して、MaxCompute MapReduce タスクをスケジューリング、実行し、他のジョブと統合できます。

制限事項

ODPS MR ノードの制限事項については、「使用制限」をご参照ください。

例:単純な WordCount ジョブ

次の例では、ODPS MR ノードを使用して、wc_in テーブル内の各文字列の出現回数をカウントし、その結果を wc_out テーブルに書き込む方法を説明します。

  1. mapreduce-examples.jar リソースをアップロード、送信、公開します。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

    説明

    mapreduce-examples.jar パッケージ内の実装ロジックの詳細については、「WordCount の例」をご参照ください。

  2. ODPS MR ノードに次のコードを入力して実行します。

    -- 入力テーブルを作成します。
    CREATE TABLE if not exists wc_in (key STRING, value STRING);
    -- 出力テーブルを作成します。
    CREATE TABLE if not exists wc_out (key STRING, cnt BIGINT);
        --- システムの dual テーブルを作成します。
        drop table if exists dual;
        create table dual(id bigint); -- この疑似テーブルがワークスペースに存在しない場合は、作成してデータを初期化する必要があります。
        --- システムの疑似テーブルのデータを初期化します。
        insert overwrite table dual select count(*)from dual;
        --- 入力テーブル 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;
    -- アップロードした JAR リソースを参照します。リソースリストでリソースを右クリックし、[リソースパスの挿入] を選択します。
    --@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

    このコードには、次の文とパラメーターが含まれています:

    • --@resource_reference:リソース名を右クリックし、Insert Resource Path を選択すると、この文が自動的に生成されます。

    • -resources:参照される JAR リソースのファイル名です。

    • -classpath:JAR パッケージへのパスです。リソースはすでに参照されているため、パスは現在のディレクトリ (./) 内の JAR ファイルを指します。

    • com.aliyun.odps.mapred.open.example.WordCount:JAR ファイルから実行するメインクラスの完全修飾名です。

    • wc_in:MapReduce ジョブの入力テーブルの名前です。このテーブルは前のコードで作成されます。

    • wc_out:MapReduce ジョブの出力テーブルの名前です。このテーブルは前のコードで作成されます。

    • MapReduce ジョブで複数の JAR リソースが必要な場合は、パスをカンマで区切ります。例:-classpath ./xxxx1.jar,./xxxx2.jar

    結果:OK

  3. ODPS SQL ノードで、次のコマンドを実行して wc_out テーブルのデータをクエリします。

    select * from wc_out;

    期待される出力:

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

高度な例

より多くのシナリオで MaxCompute MapReduce タスクを開発する方法については、次のトピックをご参照ください:

次のステップ

現在のノードでタスクの開発が完了したら、次の操作を実行できます:

  • スケジューリング設定:ノードの定期的なスケジューリングプロパティを設定します。定期的に実行する必要があるタスクについては、再実行設定やスケジューリングの依存関係などのプロパティを設定する必要があります。詳細については、「タスクスケジューリング設定の概要」をご参照ください。

  • タスクのデバッグ:ノードのコードをテストおよび実行して、そのロジックが正しいことを確認します。詳細については、「タスクのデバッグプロセス」をご参照ください。

  • タスクのデプロイ:開発が完了したら、タスクノードをデプロイします。デプロイされたノードは、スケジューリング設定に基づいて定期的に実行されます。詳細については、「タスクのデプロイ」をご参照ください。