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

MaxCompute:MaxCompute MapReduce タスクの開発

最終更新日:Sep 07, 2026

ODPS MR ノードを作成することで、MapReduce Java API を使用して MaxCompute のデータを処理する MapReduce プログラムを作成し、スケジューリングできます。

前提条件

重要

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

背景

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

  • MaxCompute MapReduce: ネイティブの MaxCompute インターフェイスです。 ファイルシステムを公開することなく、高速な実行と迅速な開発を実現します。

  • Extended 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: リソース名を右クリックし、リソースのリファレンス を選択すると、このステートメントが自動的に生成されます。

    • -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 タスクを開発するその他のシナリオについては、次のトピックをご参照ください:

次のステップ

ノードを開発した後、必要に応じて次の操作を実行してください。

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

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

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