すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:JAR 開発の開始

最終更新日:Nov 09, 2025

ビジネスロジックを含む JAR パッケージをビルドし、アップロードして Spark JAR ジョブを開発できます。このトピックでは、JAR ジョブを開発およびデプロイする方法の 2 つの例を示します。

前提条件

  • ワークスペースが作成されていること。詳細については、「ワークスペース管理」をご参照ください。

  • ビジネスアプリケーションが開発され、JAR ファイルにパッケージ化されていること。

手順

ステップ 1: JAR パッケージを開発する

E-MapReduce (EMR) Serverless Spark は、JAR パッケージ用の統合開発環境 (IDE) を提供していません。したがって、ローカルまたはスタンドアロンの開発プラットフォームで Spark アプリケーションコードを記述し、JAR ファイルにパッケージ化する必要があります。このトピックでは、2 つの例を示します。

Maven プロジェクトの pom.xml ファイルに、Spark 関連の依存関係を追加する必要があります。Serverless Spark ランタイム環境にはこれらの依存関係が組み込まれているため、scopeprovided に設定できます。これにより、コンパイルおよびテストフェーズ中に依存関係が利用可能であることを保証しつつ、重複したパッケージングやバージョンの競合を防ぐことができます。

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>3.5.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>3.5.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.12</artifactId>
    <version>3.5.2</version>
    <scope>provided</scope>
</dependency>

DLF テーブルのクエリ

public class HiveTableAccess {
    public static void main(String[] args) {
        SparkSession spark = SparkSession.builder()
                .appName("DlfTableAccessExample")
                .enableHiveSupport()
                .getOrCreate();
        spark.sql("SELECT * FROM test_table").show();
        spark.stop();
    }
}

円周率 (π) の近似値を計算する

import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SparkSession;

import java.util.ArrayList;
import java.util.List;

/**
 * 円周率の近似値を計算します
 * 使用法: JavaSparkPi [partitions]
 */
public final class JavaSparkPi {

  public static void main(String[] args) throws Exception {
    SparkSession spark = SparkSession
      .builder()
      .appName("JavaSparkPi")
      .getOrCreate();

    JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());

    int slices = (args.length == 1) ? Integer.parseInt(args[0]) : 2;
    int n = 100000 * slices;
    List<Integer> l = new ArrayList<>(n);
    for (int i = 0; i < n; i++) {
      l.add(i);
    }

    JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);

    int count = dataSet.map(integer -> {
      double x = Math.random() * 2 - 1;
      double y = Math.random() * 2 - 1;
      return (x * x + y * y <= 1) ? 1 : 0;
    }).reduce((integer, integer2) -> integer + integer2);

    System.out.println("Pi is roughly " + 4.0 * count / n);

    spark.stop();
  }
}

SparkExample-1.0-SNAPSHOT.jar をクリックして、テスト JAR パッケージをダウンロードします。

ステップ 2: JAR パッケージをアップロードする

  1. ファイルアップロードページに移動します。

    1. EMR コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。

    3. [Spark] ページで、対象のワークスペースの名前をクリックします。

    4. EMR Serverless Spark ページで、左側のナビゲーションウィンドウにある [ファイル] をクリックします。

  2. [ファイル] ページで、[ファイルのアップロード] をクリックします。

  3. [ファイルのアップロード] ダイアログボックスで、アップロードエリアをクリックしてローカルの JAR パッケージを選択するか、JAR パッケージをエリアにドラッグします。

    この例では、SparkExample-1.0-SNAPSHOT.jar パッケージがアップロードされます。

ステップ 3: ジョブを開発して実行する

  1. EMR Serverless Spark ページで、左側のナビゲーションウィンドウにある [データ開発] をクリックします。

  2. [開発] タブで、image アイコンをクリックします。

  3. 名前を入力し、タイプとして [バッチジョブ] > [JAR] を選択し、[OK] をクリックします。

  4. 右上隅でキューを選択します。

    キューの追加方法の詳細については、「リソースキューの管理」をご参照ください。

  5. 新しいジョブタブで、次のパラメーターを設定し、他のパラメーターはデフォルト値のままにして、[実行] をクリックします。

    パラメーター

    説明

    メイン JAR リソース

    前のステップでアップロードした JAR パッケージを選択します。この例では、SparkExample-1.0-SNAPSHOT.jar を選択します。

    メインクラス

    Spark ジョブを送信するときに指定されるメインクラス。

    • 円周率 (π) の近似値を計算するには: この例では、org.example.JavaSparkPi と入力します。

    • Hive テーブルをクエリするには: この例では、org.example.HiveTableAccess と入力します。

  6. ジョブが実行された後、[実行記録] セクションで、[アクション] 列の [ログプローブ] をクリックしてログ情報を表示します。

    image

    image

ステップ 4: ジョブを公開する

重要

公開されたジョブは、ワークフローのノードとして使用できます。

  1. ジョブが完了したら、右上隅の [公開] をクリックします。

  2. 表示されるダイアログボックスにリリース情報を入力し、[OK] をクリックします。

(オプション) ステップ 5: Spark UI を表示する

ジョブが正常に実行された後、Spark UI でその実行詳細を表示できます。

  1. 左側のナビゲーションウィンドウで、[ジョブ履歴] をクリックします。

  2. [アプリケーション] ページで、対象のジョブを見つけ、[アクション] 列の [Spark UI] をクリックします。

  3. Spark ジョブページで、ジョブの詳細を表示できます。

    image

参考資料

ジョブが公開された後、ワークフローのスケジューリングに使用できます。詳細については、「ワークフローの管理」をご参照ください。ジョブオーケストレーションの完全な開発プロセスの例については、「SparkSQL 開発の開始」をご参照ください。