クラスター上で Spark アプリケーションを作成して実行する
このチュートリアルでは、Spark を使用する基本的なシナリオについて説明します。簡単なアプリケーションを作成し、Gradle で構築し、AWS EMR クラスターにアップロードし、Spark と Hadoop YARN でジョブを監視します。
次の手順を実行します。
Spark プロジェクトウィザードを使用した 新しい Spark プロジェクトを最初から作成します。 ウィザードを使用すると、ビルドツール (SBT、Maven、Gradle) と JDK を選択し、必要な Spark 依存関係がすべて揃っていることを確認できます。
Spark アプリケーションを AWS EMR に送信します。 すぐに使用できる実行構成を作成する特別なガターアイコンを使用します。
Spark プラグインをインストールする
この機能は、インストールして有効にする必要がある Spark(英語) プラグインに依存しています。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 Spark プラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。
Spark プロジェクトを作成する
メインメニューで へ移動します。
新規プロジェクト ウィザードの左側のペインで、 Spark を選択します。
プロジェクトの名前とその場所を指定します。
言語 リストで、 Scala を選択します。
タイプ リストは、生成するサンプルアプリケーションのタイプを定義するために使用されます。 今回は独自のアプリケーションを作成するため、任意のタイプを選択できます。
JDK リストで、JDK 8, 11,, 17 を選択します。
アーティファクトコーディネート で、グループ ID とバージョンを指定します。

作成 をクリックします。
これにより、基本構造を持つ新しい Spark プロジェクトと、Spark 依存関係を持つ build.gradle が作成されます。
Spark アプリケーションの作成
作成したプロジェクトで、 フォルダーを右クリックし (または Alt+Insert を押し)、 を選択します。
開いた 新規 Scala クラスの作成 ウィンドウで オブジェクト を選択し、名前 (例:
SparkScalaApp) を入力します。Spark コードを記述します。
SparkSessionクラスのgetOrCreateメソッドをmainメソッドのアプリケーションで使用すると、ガターに特別なアイコンが表示され、Spark Submit 実行構成をすばやく作成できます。
例:
import org.apache.spark.sql.{DataFrame, SparkSession} import org.apache.spark.sql.functions._ object SparkScalaApp { def main(args: Array[String]): Unit = { // Create a SparkSession val spark = SparkSession.builder() .appName("Simple Spark App") .getOrCreate() // Sample data val data = Seq( (1, "Alice", 25), (2, "Bob", 30), (3, "Charlie", 22) ) // Define the schema for the DataFrame val schema = List("id", "name", "age") // Create a DataFrame from the sample data and schema val df: DataFrame = spark.createDataFrame(data).toDF(schema: _*) // Perform a simple transformation (add 5 to the age column) val transformedDF = df.withColumn("age_plus_5", col("age") + 5) // Stop the SparkSession spark.stop() } }
AWS EMR クラスターへの SSH アクセスをセットアップする
Spark Submit 実行構成では、spark-submit コマンドを実行するために AWS EMR クラスターへの SSH アクセスが必要です。
まだお持ちでない場合は、 AWSEMR への接続を作成します。
AWS EMR ツールウィンドウを開きます: 。
クラスターを選択し、「情報 」タブを開き、「SSH 構成を開く 」をクリックします。
開いた SSH 構成 ウィンドウで、認証パラメーターを確認し、秘密鍵ファイルへのパスを指定します。 この構成を確認するには、「接続のテスト 」をクリックします。
Spark ジョブを AWS EMR に送信する
専用の Spark Submit 実行構成を使用すると、Spark アプリケーションを即座に構築し、AWS EMR クラスターに送信できます。 アーティファクトを AWS EMR にアップロードするには、Gradle タスク、IntelliJ IDEA アーティファクトを使用するか、既存の JAR ファイルを選択します。 このチュートリアルでは、Gradle を使用します。
ガターで、
getOrCreateメソッドの横にあるをクリックします。

Spark Submit 構成を作成する を選択します。
実行構成の次のパラメーターを指定します。
リモートターゲット リストで、AWS EMR クラスターを選択します。 IntelliJ IDEA は、Spark 履歴サーバーが実行されているクラスターを提案します。
アプリケーションは で、
をクリックし、Gradle アーティファクトを選択します。
この設定を実行すると、IntelliJ IDEA はこのアーティファクトを構築し、AWS EMR にアップロードします。 対応する Gradle タスクの実行 および SFTP 経由でファイルをアップロードする のステップは、 起動前 セクションで確認できます。
追加のカスタマイズ をクリックし、 Spark 構成 セクションを有効にし、 クラスターマネージャー リストで Hadoop YARN が選択されていることを確認します。
実行 をクリックします。

これにより、 実行 ツールウィンドウが開き、Gradle タスクが表示されます。 アーティファクトがビルドされると、Spark Submit タスクが 実行 ツールウィンドウの新しいタブで開きます。
この実行構成の詳細については、「Spark Submit 実行構成 」を参照してください。
Spark 履歴サーバーでアプリケーションを開く
アプリケーションが AWS EMR に正常にアップロードされると、Spark 履歴サーバーで利用できるようになります。 実行 ツールウィンドウに対応する通知が表示されます。 ブラウザーまたは専用の Spark モニタリング ツールウィンドウで開くことができます。
実行 ツールウィンドウで、開いた通知内の オープンモニタリング をクリックします。
または、 実行 ツールウィンドウの実行構成出力で トラッキング URL をクリックすることもできます。

Spark モニタリング ツールウィンドウの詳細については、「Spark モニタリング 」を参照してください。
Hadoop YARN リソースマネージャーから Spark ジョブを開く
Spark アプリケーションを YARN クラスターに送信すると、そのアプリケーションは YARN アプリケーションとして実行され、専用の Hadoop YARN ツールウィンドウ (Metastore Core プラグインによって提供される) で監視できます。 これは、チュートリアルで Spark Submit 実行構成でクラスターマネージャーとして Hadoop YARN を選択したときに行ったことです。
Hadoop YARN ツールウィンドウを開きます: 。 複数の Hadoop YARN 接続がある場合は、ツールウィンドウの上部にあるタブを使用して必要な接続を選択します。
アプリケーション タブを開き、 Id 列を使用してアプリケーションを見つけます。
トラッキング URL 列のアドレスをクリックします。
Spark モニタリング ツールウィンドウにリダイレクトされない場合は、接続が見つからないことに関する通知が表示されます。 接続の選択 をクリックして既存の Spark 接続を選択するか、 をクリックして新しい接続を作成します。

Spark とのこの統合は、Hadoop YARN 接続設定で構成されます。 これを確認または変更するには、Hadoop YARN 接続設定を開き (Hadoop YARN ツールウィンドウの または ビッグデータツール ツールウィンドウの
をクリックして)、 Spark モニタリング リストで Spark 接続を選択します。
Hadoop YARN ツールウィンドウの詳細については、「Hadoop YARN 」を参照してください。