このクイックスタートでは、MaxCompute Studio を使用して WordCount MapReduce プログラムを開発し、JAR ファイルとしてパッケージ化し、MaxCompute クライアントで MapReduce ジョブを実行する方法について説明します。
前提条件
以下が準備されていることを確認してください。
-
MaxCompute クライアントがインストールされ、設定済みであること。 詳細については、「MaxCompute クライアントのインストールと設定」をご参照ください。
-
MaxCompute Studio がインストールされ、MaxCompute プロジェクトに接続されていること。 詳細については、「MaxCompute Studio のインストール」および「プロジェクト接続の管理」をご参照ください。
-
ローカルマシンにソースデータファイルが保存されていること。
このトピックでは、`data.txt` という名前のサンプルファイルを使用します。 このファイルには
hello,odpsという内容が含まれており、MaxCompute クライアントのbinディレクトリに保存されています。
注意事項
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>
操作手順
-
MaxCompute Studio で MapReduce プログラムを作成、実行、デバッグします。
-
ステップ 2: MapReduce JAR ファイルの生成とアップロード
コンパイル済みの WordCount.java スクリプトを JAR ファイルにパッケージ化し、MaxCompute プロジェクトにアップロードします。
-
MaxCompute プロジェクトにアップロードされた JAR ファイルを使用して、
jarコマンドで MapReduce ジョブを実行します。
ステップ 1: MapReduce プログラムの開発
-
MaxCompute Java モジュールを作成します。
-
IntelliJ IDEA を起動します。 メニューバーで、 を選択します。
-
[新しいモジュール] ダイアログボックスの左側のナビゲーションウィンドウで、[MaxCompute Java] を選択します。
-
[モジュール SDK] を設定し、[次へ] をクリックします。
-
[モジュール名] (例: mapreduce) を入力し、[完了] をクリックします。
-
-
WordCount MapReduce プログラムを作成、実行、デバッグします。
-
[プロジェクト] ペインで、モジュールのソースコードディレクトリ を右クリックし、 を選択します。
-
[新しい MaxCompute java クラスの作成] ダイアログボックスで、[Driver] をクリックし、[名前] (例: WordCount) を入力して Enter キーを押します。
-
新しく作成された WordCount.java ファイルに、WordCount MapReduce プログラムを作成します。
完全な WordCount サンプルコードについては、「コード例」をご参照ください。
-
左側のナビゲーションウィンドウで、WordCount.java スクリプトを右クリックし、[実行] を選択します。
-
[実行/デバッグ構成] ダイアログボックスで、[MaxCompute プロジェクト] を設定します。
[MaxCompute プロジェクト] 設定では、
http://service.cn-hangzhou.maxcompute.aliyun.com/apiなどの [エンドポイント] を選択し、次にdoc_test_devなどの対象のプロジェクトを選択します。 -
[OK] をクリックします。 WordCount.java スクリプトを実行およびデバッグして、正常にコンパイルされることを確認します。
-
ステップ 2: MapReduce JAR ファイルの生成とアップロード
-
IntelliJ IDEA の左側のナビゲーションウィンドウで、WordCount.java スクリプトを右クリックし、[サーバーにデプロイ...] を選択します。
-
[jar をパッケージ化してリソースを送信] ダイアログボックスで、パラメーターを設定し、[OK] をクリックします。
ターゲットの MaxCompute プロジェクトを選択します。 [リソースファイル] フィールドには、パッケージ化された JAR ファイルのパスが表示されます。 [リソース名] (例:
mapreduce-1.0-SNAPSHOT.jar) を入力します。 必要に応じて、[リソースコメント] フィールドにコメントを追加します。 [すでに存在する場合は強制的に更新する] を選択すると、同じ名前の既存のリソースが上書きされます。パラメーターの詳細については、「操作手順」をご参照ください。
説明Maven を使用して MapReduce プログラムを開発した場合、JAR ファイルにパッケージ化した後、MaxCompute クライアントを使用して MaxCompute プロジェクトに手動でアップロードする必要があります。 詳細については、「リソースの追加」をご参照ください。 以下にコマンドの例を示します。
add jar mapreduce-1.0-SNAPSHOT.jar;
ステップ 3: MapReduce ジョブの実行
-
MaxCompute クライアントにログインするか、MaxCompute Studio で MaxCompute クライアントを開きます。
MaxCompute クライアントは MaxCompute Studio に統合されています。 MaxCompute Studio で MaxCompute クライアントを直接実行できます。 詳細については、「MaxCompute クライアントの統合」をご参照ください。
-
入力テーブルと出力テーブルを作成します。
MapReduce ジョブは、入力テーブルからソースデータを読み取り、結果を出力テーブルに書き込みます。 以下にコマンドの例を示します。
-- 入力テーブル wc_in を作成します。 create table wc_in (key STRING, value STRING); -- 出力テーブル wc_out を作成します。 create table wc_out (key STRING, cnt BIGINT);テーブル作成の構文の詳細については、「テーブルの作成」をご参照ください。
-
Tunnel Upload コマンドを使用して、wc_in テーブルにデータを挿入します。
-
jarコマンドを使用して、生成された JAR ファイルで MapReduce ジョブを実行します。以下にコマンドの例を示します。
jar -resources mapreduce-1.0-SNAPSHOT.jar -classpath mapreduce-1.0-SNAPSHOT.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out;-
-resources mapreduce-1.0-SNAPSHOT.jar:-resourcesパラメーターは、MapReduce ジョブによって呼び出されるリソースの名前を指定します。 この例では、リソースはステップ 2でアップロードされた mapreduce-1.0-SNAPSHOT.jar ファイルです。 -
-classpath mapreduce-1.0-SNAPSHOT.jar:-classpathパラメーターは、MainClass を含む JAR ファイルへのローカルパスを指定します。 -
com.aliyun.odps.mapred.open.example.WordCount:MapReduce プログラムで定義された MainClass です。 -
wc_in wc_out:入力テーブルと出力テーブルです。
jarコマンドの詳細については、「構文」をご参照ください。 -
-
次のコマンドを実行して、wc_out テーブルのデータを表示します。
select * from wc_out;次の結果が返されます。
+------------+------------+ | key | cnt | +------------+------------+ | hello | 1 | | odps | 1 | +------------+------------+