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

DataWorks:MaxCompute MapReduceタスクの開発

最終更新日:Mar 25, 2025

MaxComputeはMapReduce APIをサポートしています。 MapReduce Java APIを呼び出してMapReduceプログラムを作成し、MaxComputeデータを処理するODPS MRノードを作成してコミットできます。

前提条件

重要

ODPS MRノードを作成する前に、必要なリソースをアップロード、コミット、およびデプロイする必要があります。

背景情報

MapReduceは、分散コンピューティングプログラムのプログラミングフレームワークです。 MapReduceは、ユーザーが作成したビジネスロジックコードを組み込みのMapReduceコンポーネントと統合して、Hadoopクラスターでジョブを同時に実行できる完全な分散コンピューティングプログラムを生成できます。 MaxComputeは、2つのバージョンのMapReduce APIを提供します。 詳細については、「MapReduce」をご参照ください。

  • MaxCompute MapReduce: MaxComputeのネイティブMapReduce API。 このAPIバージョンは高速に実行され、ファイルシステムを公開することなく効率的な方法でプログラムを開発するために使用できます。

  • Extended MaxCompute MapReduce (MR2): MaxCompute MapReduceの拡張。 このAPIバージョンは、複雑なジョブをスケジュールするために使用されるロジックをサポートします。 MR2の実装方法は、MaxCompute MapReduceの実装方法と同じです。

DataWorksでは、ODPS MRノードを作成、コミット、デプロイしてMaxCompute MapReduceタスクをスケジュールし、MaxCompute MapReduceタスクを他のジョブと統合できます。

制限事項

MaxCompute MapReduceタスクの制限については、「制限」をご参照ください。

単純なコード編集の例

この例では、ODPS MRノードの使用方法を示します。 この例では、wc_inテーブル内の各文字列の発生回数がカウントされ、結果がwc_outテーブルに書き込まれます。

  1. リソースmapreduce example.jarをアップロード、コミット、およびデプロイします。 詳細については、「MaxComputeリソースの作成と使用」をご参照ください。

    説明

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

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

    -- Create an input table. 
    CREATE TABLE if not exists wc_in (key STRING, value STRING);
    -- Create an output table. 
    CREATE TABLE if not exists wc_out (key STRING, cnt BIGINT);
        --- Create a dual table. 
        drop table if exists dual;
        create table dual(id bigint); -- If no dual table exists in the current workspace, create a dual table. 
        --- Initialize the dual table. 
        insert overwrite table dual select count(*)from dual;
        --- Insert the sample data into the wc_in table. 
        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;
    -- Reference the uploaded JAR resource. To reference the resource, find the JAR resource in the resource list, right-click the JAR resource, and then select Reference Resources. 
    --@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リソースのパス。 入力する必要があるのは、./ と参照先リソースの名前だけです。

    • com.aliyun.odps.mapred.open.example.WordCount: ノードの実行中に呼び出されるJARリソース内のメインクラスの名前。

    • wc_in: ODPS MRノードの作成された入力テーブルの名前。

    • wc_out: ODPS MRノードの作成された出力テーブルの名前。

    • 単一のODPS MRノードで複数のJARリソースを使用する場合は、参照先のJARリソースのパスをコンマ (,) で区切ります。-クラスパス /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タスクを開発する方法については、以下のトピックを参照してください。

次に何をすべきか

作成したノードを使用してタスクの開発を完了した後、次の操作を実行できます。

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

  • ノードのデバッグ: ノードのコードをデバッグおよびテストして、コードロジックが期待どおりかどうかを確認できます。 詳細については、「デバッグ手順」をご参照ください。

  • ノードのデプロイ: すべての開発操作が完了したら、ノードをデプロイできます。 ノードがデプロイされた後、システムはノードのスケジューリングプロパティに基づいてノードを定期的にスケジュールします。 詳細については、「ノードのデプロイ」をご参照ください。

  • MaxCompute MapReduceに関するFAQ: MaxCompute MapReduceでよくある質問を確認できます。 これにより、例外が発生したときに問題を効率的に特定してトラブルシューティングできます。