

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

# エンドツーエンド Amazon EMR Java ソースコード例
<a name="emr-common-programming-sample"></a>

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

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

 この Java ソースコード例は、Amazon EMR API を使用して以下のタスクを実行する方法を示しています。
+  AWS 認証情報を取得し、Amazon EMR に送信して API コールを行う
+ 新しいカスタムステップと事前定義されたステップを設定する
+ 既存の Amazon EMR クラスターに新しいステップを追加する
+ 実行中のクラスターからクラスターステップ ID を取得する

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

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

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

**Database Development Eclipse プラグインをインストールする**

1. Eclipse IDE を開きます。

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

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

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

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

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

**Toolkit for Eclipse をインストールする**

1. Eclipse IDE を開きます。

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

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

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

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

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

**新しい Java AWS プロジェクトを作成するには**

1. Eclipse IDE を開きます。

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

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

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

1. ** AWS アカウントの設定...**を選択し、パブリックアクセスキーとプライベートアクセスキーを入力し、**完了**を選択します。アクセスキーの作成の詳細については、「*Amazon Web Services 全般のリファレンスガイド*」の「[セキュリティ認証情報の取得方法](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html)」を参照してください。
**注記**  
コードに直接アクセスキーを埋め込むことは**できません**。Amazon EMR SDK では、既知のロケーションにアクセスキーを配置できるため、コードで保持する必要はありません。

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

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

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

1. 新しいクラス内に Java ソースコードを入力し、サンプルのクラスと方法に適切な **import ** ステートメントを追加します。参考までに、完全なソースコードのリストを下に示します。
**注記**  
次のサンプルコードで、サンプルクラスター ID (JobFlowId) の を{{`j-xxxxxxxxxxxx`}}、 または次の AWS CLI コマンド AWS マネジメントコンソール を使用して、アカウント内の有効なクラスター 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());
   
   	}
   }
   ```

1. [**Run (実行)**]、[**Run As (実行)**]、[**Java Application (Java アプリケーション)**] の順にクリックします。

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

   ```
   [s-39BLQZRJB2E5E, s-1L6A4ZU2SAURC]
   ```