E nd-to-end Amazon EMR Java ソースコードサンプル - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

E nd-to-end Amazon EMR Java ソースコードサンプル

開発者は、カスタム Java コードを使用して Amazon EMR API を呼び出し、Amazon EMR コンソールまたは CLI で可能なことと同じことを実行できます。このセクションでは、 をインストール AWS Toolkit for Eclipse し、Amazon EMR クラスターに end-to-end ステップを追加する、完全に機能する Java ソースコードサンプルを実行するために必要なステップについて説明します。

注記

この例では Java に焦点を当てますが、Amazon EMR も Amazon EMR SDK のコレクションにより複数のプログラミング言語をサポートします。詳細については、「SDK を使用して Amazon EMR API を呼び出す」を参照してください。

この Java ソースコード例は、Amazon EMR API を使用して以下のタスクを実行する方法を示しています。

  • AWS 認証情報を取得し、Amazon EMR に送信して API コールを行う

  • 新しいカスタムステップと事前定義されたステップを設定する

  • 既存の Amazon EMR クラスターに新しいステップを追加する

  • 実行中のクラスターからクラスターステップ ID を取得する

注記

このサンプルは、既存のクラスターにステップを追加する方法を示すので、アカウントにアクティブなクラスターがある必要があります。

開始する前に、コンピューターのプラットフォームに適合するバージョンの Eclipse IDE for Java EE Developers をインストールします。詳細については、「Eclipse のダウンロード」を参照してください。

次に、Eclipse 用 Database Development プラグインをインストールします。

Database Development Eclipse プラグインをインストールする
  1. Eclipse IDE を開きます。

  2. [Help (ヘルプ)] を選択し、[Install New Software (新しいソフトウェアのインストール)] をクリックします。

  3. [Work with: (使用場所:)] フィールドに「http://download.eclipse.org/releases/kepler」または Eclipse IDE のバージョン番号と一致するパスを入力します。

  4. 項目リストで、[Database Development (データベースの開発)] を選択し、[Finish (完了)] をクリックします。

  5. 指示が表示されたら、Eclipse を再起動します。

次に、Toolkit for Eclipse をインストールして、役立つように事前設定されたソースコードプロジェクトテンプレートを利用できるようにします。

Toolkit for Eclipse をインストールする
  1. Eclipse IDE を開きます。

  2. [Help (ヘルプ)] を選択し、[Install New Software (新しいソフトウェアのインストール)] をクリックします。

  3. [Work with:] フィールドに「https://aws.amazon.com/eclipse」と入力します。

  4. アイテムリストで、[AWS Toolkit for Eclipse] を選択し、[完了] を選択します。

  5. 指示が表示されたら、Eclipse を再起動します。

次に、新しい AWS Java プロジェクトを作成し、サンプルの Java ソースコードを実行します。

新しい AWS Java プロジェクトを作成するには
  1. Eclipse IDE を開きます。

  2. [File (ファイル)]、[New (新規)]、[Other (その他)] の順に選択します。

  3. [ウィザードの選択] ダイアログで、[AWS Java プロジェクト] を選択し、[次へ] をクリックします。

  4. 「新しい AWS Java プロジェクト」ダイアログの Project name:フィールドに、新しいプロジェクトの名前を入力します。例えば、「」ですEMR-sample-code

  5. AWS 「アカウントの設定」を選択し、パブリックアクセスキーとプライベートアクセスキーを入力し、「 の終了」を選択します。アクセスキーの作成の詳細については、「Amazon Web Services 全般のリファレンスガイド」の「セキュリティ認証情報の取得方法」を参照してください。

    注記

    コードに直接アクセスキーを埋め込むことはできません。Amazon EMR SDK では、既知のロケーションにアクセスキーを配置できるため、コードで保持する必要はありません。

  6. 新しい Java プロジェクトで、src フォルダを右クリックし、[New (新規)]、[Class (クラス)] の順にクリックします。

  7. [Java Class (Java クラス)] ダイアログの [Name (名前)] フィールドに新しいクラスの名前を入力します (例: main)。

  8. [Which method stubs would you like to create? (どのメソッドスタブを作成しますか?)] セクションで、[public static void main(String[]args)] を選択し、[Finish (完了)] をクリックします。

  9. 新しいクラス内に Java ソースコードを入力し、サンプルのクラスと方法に適切な import ステートメントを追加します。参考までに、完全なソースコードのリストを下に示します。

    注記

    次のサンプルコードで、サンプルクラスター ID (JobFlowId)、、 をj-xxxxxxxxxxxx、 AWS Management Console または次の AWS CLI コマンドを使用して、 にあるアカウントの有効なクラスター ID に置き換えます。

    aws emr list-clusters --active | grep "Id"

    また、例の Amazon S3 パス (s3://path/to/my/jarfolder) を JAR への有効なパスで置き換えます。最後に、例のクラス名 (com.my.Main1) を JAR にあるクラスの正しい名前で置き換えます (該当する場合)。

    import com.amazonaws.AmazonClientException; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce; import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder; import com.amazonaws.services.elasticmapreduce.model.*; import com.amazonaws.services.elasticmapreduce.util.StepFactory; public class Main { public static void main(String[] args) { AWSCredentials credentials_profile = null; try { credentials_profile = new ProfileCredentialsProvider("default").getCredentials(); } catch (Exception e) { throw new AmazonClientException( "Cannot load credentials from .aws/credentials file. " + "Make sure that the credentials file exists and the profile name is specified within it.", e); } AmazonElasticMapReduce emr = AmazonElasticMapReduceClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials_profile)) .withRegion(Regions.US_WEST_1) .build(); // Run a bash script using a predefined step in the StepFactory helper class StepFactory stepFactory = new StepFactory(); StepConfig runBashScript = new StepConfig() .withName("Run a bash script") .withHadoopJarStep(stepFactory.newScriptRunnerStep("s3://jeffgoll/emr-scripts/create_users.sh")) .withActionOnFailure("CONTINUE"); // Run a custom jar file as a step HadoopJarStepConfig hadoopConfig1 = new HadoopJarStepConfig() .withJar("s3://path/to/my/jarfolder") // replace with the location of the jar to run as a step .withMainClass("com.my.Main1") // optional main class, this can be omitted if jar above has a manifest .withArgs("--verbose"); // optional list of arguments to pass to the jar StepConfig myCustomJarStep = new StepConfig("RunHadoopJar", hadoopConfig1); AddJobFlowStepsResult result = emr.addJobFlowSteps(new AddJobFlowStepsRequest() .withJobFlowId("j-xxxxxxxxxxxx") // replace with cluster id to run the steps .withSteps(runBashScript, myCustomJarStep)); System.out.println(result.getStepIds()); } }
  10. [Run (実行)]、[Run As (実行)]、[Java Application (Java アプリケーション)] の順にクリックします。

  11. サンプルが正しく実行される場合、新しいステップの ID のリストが Eclipse IDE コンソールウィンドウに表示されます。正しい出力は次の例のようになります。

    [s-39BLQZRJB2E5E, s-1L6A4ZU2SAURC]