MaxCompute は MapReduce プログラミングインターフェイスを提供します。MaxCompute MR ノードを作成してスケジュールし、MapReduce Java API を使用して MaxCompute の大規模なデータセットを処理する MapReduce プログラムを作成できます。
背景情報
MapReduce は分散コンピューティングフレームワークです。ユーザーが作成したビジネスロジックコードと組み込みコンポーネントを組み合わせて、Hadoop クラスター上で同時に実行される完全な分散プログラムを作成します。MaxCompute は、2 つのバージョンの MapReduce プログラミングインターフェイスを提供します。詳細については、「MapReduce」をご参照ください。
-
MaxCompute MapReduce:MaxCompute のネイティブ API です。ファイルシステムを公開することなく、高速な実行と迅速な開発を可能にします。
-
拡張 MaxCompute MapReduce (MR2):MaxCompute MapReduce の拡張機能で、より複雑なジョブスケジューリングロジックをサポートします。ネイティブの MaxCompute API と同じ実装を使用します。
DataWorks では、MaxCompute MR ノードを使用して MaxCompute MapReduce タスクをスケジュールおよび実行し、他のジョブと統合できます。
前提条件
-
MaxCompute 計算リソースが DataWorks ワークスペースにアタッチされていること。
-
必要なリソースがアップロードおよびデプロイされていること。詳細については、「リソース管理」をご参照ください。
MaxCompute MR ノードを作成する前に、必要なリソースをアップロードしてデプロイする必要があります。
制限事項
MaxCompute MR ノードの制限事項については、「制限事項」をご参照ください。
操作手順
-
MaxCompute MR ノードのエディターページで、以下の開発ステップに従います。
MR コードの開発
次の例では、MaxCompute MR ノードを使用して、
wc_in テーブル内の各文字列の出現回数をカウントし、結果を wc_out テーブルに書き込む方法を示します。-
mapreduce-examples.jar リソースをアップロード、送信、デプロイします。詳細については、「リソース管理」をご参照ください。
説明mapreduce-examples.jarパッケージの実装ロジックについては、「WordCount の例」をご参照ください。 -
MaxCompute 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:リソース管理セクションでリソース名を右クリックし、Insert Resource Path を選択して、この文を自動的に生成できます。 -
-resources:参照される JAR リソースファイルの名前。 -
-classpath:JAR パッケージのパス。リソースはすでに参照されているため、パスは一様に./配下の JAR パッケージに設定されます。 -
com.aliyun.odps.mapred.open.example.WordCount:実行中に呼び出されるメインクラス。この値は、JAR パッケージのメインクラス名と同じである必要があります。 -
wc_in:MR 入力テーブルの名前。前のコードで作成されています。 -
wc_out:MR 出力テーブルの名前。前のコードで作成されています。 -
MR タスクが複数の JAR リソースを呼び出す場合、クラスパスは次の形式で指定されます:
-classpath ./xxxx1.jar,./xxxx2.jar。パスはカンマ (,) で区切られます。
-
MR タスクの実行
-
Run Configuration で、Compute Resource、[計算クォータ]、Resource Group を設定します。
説明パブリックネットワークまたは VPC ネットワーク環境のデータソースにアクセスするには、データソースとの接続性テストに合格したスケジューリング用のリソースグループを使用する必要があります。詳細については、「ネットワーク接続」をご参照ください。
-
ツールバーのパラメーターダイアログで、作成した MaxCompute データソースを選択し、Run をクリックして MR タスクを実行します。
(任意) 結果のクエリ
MaxCompute SQL ノードを使用して、出力テーブル
wc_outのデータをクエリします。SELECT * FROM wc_out;結果:
+------------+------------+ | key | cnt | +------------+------------+ | package | 1 | | pad | 1 | | problem | 1 | | project | 1 | | val_a | 2 | | val_pro | 2 | +------------+------------+ -
-
ノードタスクを定期的に実行するには、ビジネス要件に基づいてスケジュール設定を構成します。詳細については、「スケジュール設定」をご参照ください。
-
ノードタスクを設定した後、ノードをデプロイする必要があります。詳細については、「ノードのデプロイ」をご参照ください。
-
タスクがデプロイされた後、オペレーションセンターで定期タスクの実行ステータスを表示できます。詳細については、「定期タスク」をご参照ください。
参考
その他の ODPS MR タスク開発シナリオについては、次のトピックをご参照ください:
よくある質問:MR タスクの実行中に発生する可能性のある一般的な問題について学び、迅速にトラブルシューティングを行うことができます。詳細については、「よくある質問」をご参照ください。