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 Repository で odps-sdk-mapred、odps-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 プログラムの開発
IntelliJ IDEA で MaxCompute Java モジュールを作成します。
上部のナビゲーションバーで、[File] > [New] > [Module] を選択します。
[New Module] ダイアログボックスで、左側のナビゲーションウィンドウから [MaxCompute Java] を選択します。
[Module SDK] を設定し、[Next] をクリックします。
[Module name] フィールドにモジュール名(例:
mapreduce)を入力し、[Finish] をクリックします。
WordCount MapReduce プログラムを作成および記述します。
[Project] ウィンドウで、MaxCompute Java モジュールを展開し、[src] > [main] > [java] に移動します。[java] を右クリックし、[New] > [MaxCompute Java] を選択します。
「新しい MaxCompute Java クラスの作成」ダイアログボックスで、[ドライバー] をクリックし、「[名前]」フィールドにクラス名(例:
WordCount)を入力して Enter キーを押します。
WordCount.javaのコードエディタで、単語の出現回数をカウントする WordCount MapReduce のロジックを記述します。完全なサンプルコードについては、「サンプルコード」をご参照ください。
プログラムを実行およびデバッグします。
[Project] ウィンドウで、
WordCount.javaを右クリックし、[Run] を選択します。[Run/Debug Configurations] ダイアログボックスで、[MaxCompute project] を対象のプロジェクトに設定します。

[OK] をクリックしてスクリプトを実行およびデバッグし、期待どおりに動作することを確認します。
ステップ 2:MapReduce JAR ファイルの生成とアップロード
[Project] ウィンドウで、
WordCount.javaを右クリックし、[Deploy to server] を選択します。[Package a jar and submit resource] ダイアログボックスでパラメーターを設定し、[OK] をクリックしてスクリプトをパッケージ化およびアップロードします。パラメーターの詳細については、「手順」をご参照ください。
説明Maven を使用して MapReduce プログラムを開発した場合は、パッケージ化後に MaxCompute クライアントから手動で JAR ファイルをアップロードします。詳細については、「リソースの追加」をご参照ください。サンプルコマンド:
add jar mapreduce-1.0-SNAPSHOT.jar;
ステップ 3:MapReduce タスクの実行
MaxCompute クライアントにログインするか、MaxCompute Studio 内から起動します。統合クライアントの詳細については、「MaxCompute クライアントの統合」をご参照ください。
入力テーブルと出力テーブルを作成します。入力テーブルにはソースデータを格納し、出力テーブルには処理結果を格納します。
-- 入力テーブル wc_in を作成します。 create table wc_in (key STRING, value STRING); -- 出力テーブル wc_out を作成します。 create table wc_out (key STRING, cnt BIGINT);テーブル作成の構文については、「テーブルの作成」をご参照ください。
ソースデータファイルを
wc_inにアップロードします。アップロード前にファイルの内容を確認してください。本例で使用するdata.txtファイルの内容は以下のとおりです。hello,odpsTunnel Upload コマンドを実行します。
tunnel upload data.txt wc_in;Tunnel コマンドのリファレンスについては、「Tunnel コマンド」をご参照ください。
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コマンドの構文については、「構文」をご参照ください。結果を確認します。次のコマンドを実行して出力テーブルをクエリします。
select * from wc_out;期待される出力:
+------------+------------+ | key | cnt | +------------+------------+ | hello | 1 | | odps | 1 | +------------+------------+
次のステップ
MaxCompute クライアントの詳細については、「MaxCompute クライアント (odpscmd)」をご参照ください。
MapReduce のサンプルコードの詳細については、「サンプルコード」をご参照ください。