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

MaxCompute:ドキュメント

最終更新日:Mar 26, 2026

WordCount MapReduce タスクの実行

MaxCompute Studio で MapReduce プログラムを作成し、JAR ファイルとしてパッケージ化して MaxCompute クライアント上で実行します。本トピックでは、テキストファイル内の単語の出現回数をカウントする WordCount の例を説明します。

仕組み

MaxCompute MapReduce は、次の 3 段階でデータを処理します。

(input) <key, value> → map → <key, value> → combine → <key, value> → reduce → <key, value> (output)

WordCount の例では、マップ段階で各行を単語に分割し、<word, 1> のペアを出力します。リデュース段階で単語ごとのカウントを合計し、結果を出力テーブルに書き込みます。

前提条件

作業を開始する前に、以下の要件を満たしていることを確認してください。

  • MaxCompute クライアント (odpscmd) がインストールおよび設定済みであること。詳細については、「MaxCompute クライアント (odpscmd)」をご参照ください。

  • MaxCompute Studio がインストールされ、ご利用の MaxCompute プロジェクトに接続済みであること。詳細については、「MaxCompute Studio のインストール」および「プロジェクト接続の管理」をご参照ください。

  • ソースデータファイルがローカルマシンに保存されていること。本トピックでは、内容が hello,odps である data.txt という名前のファイルを使用します。このファイルを MaxCompute クライアントの bin ディレクトリに保存してください。

Maven SDK の依存関係

Maven を使用して MapReduce プログラムを開発するには、Maven Central Repositoryodps-sdk-mapredodps-sdk-commons、および odps-sdk-core を検索し、Java バージョンに対応する SDK を見つけてください。本例ではバージョン 0.36.4-public を使用します。pom.xml に以下の依存関係を追加します。

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-mapred</artifactId>
    <version>0.36.4-public</version>
</dependency>
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-commons</artifactId>
    <version>0.36.4-public</version>
</dependency>
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-core</artifactId>
    <version>0.36.4-public</version>
</dependency>

ステップ 1:MapReduce プログラムの開発

  1. IntelliJ IDEA で MaxCompute Java モジュールを作成します。

    1. 上部のナビゲーションバーで、[File][New][Module] を選択します。

    2. [New Module] ダイアログボックスで、左側のナビゲーションウィンドウから [MaxCompute Java] を選択します。

    3. [Module SDK] を設定し、[Next] をクリックします。

    4. [Module name] フィールドにモジュール名(例:mapreduce)を入力し、[Finish] をクリックします。

  2. WordCount MapReduce プログラムを作成および記述します。

    1. [Project] ウィンドウで、MaxCompute Java モジュールを展開し、[src][main][java] に移動します。[java] を右クリックし、[New][MaxCompute Java] を選択します。

    2. 新しい MaxCompute Java クラスの作成」ダイアログボックスで、[ドライバー] をクリックし、「[名前]」フィールドにクラス名(例: WordCount)を入力して Enter キーを押します。新建Java class

    3. WordCount.java のコードエディタで、単語の出現回数をカウントする WordCount MapReduce のロジックを記述します。完全なサンプルコードについては、「サンプルコード」をご参照ください。

  3. プログラムを実行およびデバッグします。

    1. [Project] ウィンドウで、WordCount.java を右クリックし、[Run] を選択します。

    2. [Run/Debug Configurations] ダイアログボックスで、[MaxCompute project] を対象のプロジェクトに設定します。配置项目信息

    3. [OK] をクリックしてスクリプトを実行およびデバッグし、期待どおりに動作することを確認します。

ステップ 2:MapReduce JAR ファイルの生成とアップロード

  1. [Project] ウィンドウで、WordCount.java を右クリックし、[Deploy to server] を選択します。

  2. [Package a jar and submit resource] ダイアログボックスでパラメーターを設定し、[OK] をクリックしてスクリプトをパッケージ化およびアップロードします。パラメーターの詳細については、「手順」をご参照ください。

    説明

    Maven を使用して MapReduce プログラムを開発した場合は、パッケージ化後に MaxCompute クライアントから手動で JAR ファイルをアップロードします。詳細については、「リソースの追加」をご参照ください。サンプルコマンド:

    add jar mapreduce-1.0-SNAPSHOT.jar;

    打包

ステップ 3:MapReduce タスクの実行

  1. MaxCompute クライアントにログインするか、MaxCompute Studio 内から起動します。統合クライアントの詳細については、「MaxCompute クライアントの統合」をご参照ください。

  2. 入力テーブルと出力テーブルを作成します。入力テーブルにはソースデータを格納し、出力テーブルには処理結果を格納します。

    -- 入力テーブル wc_in を作成します。
    create table wc_in (key STRING, value STRING);
    -- 出力テーブル wc_out を作成します。
    create table wc_out (key STRING, cnt BIGINT);

    テーブル作成の構文については、「テーブルの作成」をご参照ください。

  3. ソースデータファイルを wc_in にアップロードします。アップロード前にファイルの内容を確認してください。本例で使用する data.txt ファイルの内容は以下のとおりです。

    hello,odps

    Tunnel Upload コマンドを実行します。

    tunnel upload data.txt wc_in;

    Tunnel コマンドのリファレンスについては、「Tunnel コマンド」をご参照ください。

  4. JAR コマンドを実行して MapReduce タスクを実行します。

    パラメーター説明
    -resources mapreduce-1.0-SNAPSHOT.jarMapReduce タスクによって呼び出されるリソース — ステップ 2 でアップロードした JAR ファイル
    -classpath mapreduce-1.0-SNAPSHOT.jarMainClass を含む JAR ファイルのパス
    com.aliyun.odps.mapred.open.example.WordCountMapReduce プログラムで定義された MainClass
    wc_in wc_out入力テーブルおよび出力テーブル
    jar -resources mapreduce-1.0-SNAPSHOT.jar -classpath mapreduce-1.0-SNAPSHOT.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out;

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

  5. 結果を確認します。次のコマンドを実行して出力テーブルをクエリします。

    select * from wc_out;

    期待される出力:

    +------------+------------+
    | key        | cnt        |
    +------------+------------+
    | hello      | 1          |
    | odps       | 1          |
    +------------+------------+

次のステップ