ネットワーク接続により、Serverless Spark がご利用の VPC (Virtual Private Cloud) 内のデータソース、サーバー、およびサービスにアクセスできるようになります。本ガイドでは、Spark SQL タスクおよび JAR タスクを VPC 内の Hive Metastore (HMS) に接続することで、ネットワーク接続を設定する手順を説明します。
前提条件
データソースが準備済みである必要があります。本例では、EMR on ECS ページで作成したデータレイククラスターを使用します。このクラスターには Hive サービスが含まれており、その Metadata は Built-in MySQL に保存されています。詳細については、「クラスターの作成」をご参照ください。
制限事項
vSwitch は以下のアベイラビリティゾーンでのみサポートされます。
ステップ 1:ネットワーク接続の作成
-
ネットワーク接続ページに移動します。
-
EMR コンソール にログインします。
-
左側のナビゲーションウィンドウで、EMR Serverless > Spark を選択します。
-
Spark ページで、対象のワークスペース名をクリックします。
-
EMR Serverless Spark ページの左側ナビゲーションウィンドウで、Normal Network Connection をクリックします。
-
-
Normal Network Connection ページで、Create Network Connection をクリックします。
-
Create Network Connection ダイアログボックスで、以下のパラメーターを設定し、OK をクリックします。
パラメーター
説明
Name
接続の名前を入力します。
VPC
EMR クラスターと同じ VPC を選択します。
VPC が利用できない場合は、Create VPC をクリックして VPC コンソールで新規作成してください。詳細については、「VPC と vSwitch」をご参照ください。
説明Serverless Spark アプリケーションがインターネットにアクセスする必要がある場合、ネットワーク接続がインターネットアクセスを提供していることを確認してください。たとえば、VPC にパブリック NAT Gateway をデプロイすることで、Serverless Spark インスタンスがインターネットにアクセスできるようにできます。詳細については、「Public NAT Gateway」をご参照ください。
vSwitch
EMR クラスターと同じ VPC 内の vSwitch を選択します。
現在のゾーンに vSwitch が存在しない場合は、vSwitch をクリックして VPC コンソールで新規作成してください。詳細については、「vSwitch の作成と管理」をご参照ください。
重要vSwitch は特定のゾーンでのみ選択できます。詳細については、「制限事項」をご参照ください。
ネットワーク接続の Status が Succeeded に変化すると、ネットワーク接続が作成されたことになります。

ステップ 2:セキュリティグループルールの追加
-
ネットワーク接続で使用する vSwitch の CIDR ブロックを取得します。
VPC コンソール にログインし、vSwitch ページに移動して、該当 vSwitch の CIDR ブロックを確認します。

-
セキュリティグループルールを追加します。
-
EMR on ECS コンソール にログインします。
-
EMR on ECS ページで、対象クラスターのクラスター ID をクリックします。
-
基本情報 ページの Security セクションで、Cluster Security Group の横にあるリンクをクリックします。
-
セキュリティグループ詳細 ページの ルール セクションで、Add Rule をクリックし、以下のパラメーターを設定してから、OK をクリックします。
パラメーター
説明
プロトコル
許可するネットワークプロトコルです。デフォルトは TCP です。
説明ネットワーク接続で Kerberos 認証を使用する場合、UDP を選択し、ポート 88 をオープンすることを推奨します。Kerberos 認証の詳細については、「Kerberos 認証の有効化」をご参照ください。
ソース
前の手順で取得した vSwitch CIDR ブロックを入力します。
重要セキュリティリスクを回避するため、Authorization Object を 0.0.0.0/0 に設定しないでください。
宛先 (現在のインスタンス)
オープンする宛先ポートです。例:9083。
-
(オプション)ステップ 3:Hive への接続とデータのクエリ
Hive テーブルがすでに存在する場合は、この手順をスキップしてください。
-
SSH を使用してクラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
-
Hive コマンドラインを起動します。
hive -
テーブルを作成します。
CREATE TABLE my_table (id INT,name STRING); -
テーブルにデータを挿入します。
INSERT INTO my_table VALUES (1, 'John'); INSERT INTO my_table VALUES (2, 'Jane'); -
データをクエリします。
SELECT * FROM my_table;
(オプション)ステップ 4:JAR アーティファクトのビルドとアップロード
JAR タスクを実行するには、事前にアーティファクトを準備する必要があります。Spark SQL タスクの場合は、この手順をスキップしてください。
-
ローカルマシンで Maven プロジェクトを作成します。
-
mvn packageコマンドを実行してプロジェクトをパッケージ化します。このコマンドにより、sparkDataFrame-1.0-SNAPSHOT.jar ファイルが生成されます。 -
ワークスペースの EMR Serverless Spark ページで、左側ナビゲーションウィンドウの Artifacts をクリックします。
-
Artifacts ページで、Upload File をクリックします。
-
ローカルマシンから
sparkDataFrame-1.0-SNAPSHOT.jarファイルをアップロードします。
ステップ 5:タスクの作成と実行
JAR タスク
-
EMR Serverless Spark ページで、左側ナビゲーションウィンドウの Development をクリックします。
-
Create をクリックします。
-
名前を入力し、タイプとして を選択し、OK をクリックします。
-
タスクエディターで、以下のパラメーターを設定します。その他のパラメーターはデフォルト値のままにしてください。その後、実行 をクリックします。
パラメーター
説明
Main JAR Resource
前の手順でアップロードしたアーティファクトを選択します。例:sparkDataFrame-1.0-SNAPSHOT.jar。
Main Class
タスクのメインクラスを入力します。本例では、com.example.DataFrameExample を使用します。
Normal Network Connection
ステップ 1 で作成したネットワーク接続を選択します。
Spark Configuration
以下のプロパティを設定します。
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory*.*.*.*を HMS (Hive Metastore Service) のプライベート IP アドレスに置き換えます。この例では、HMS は EMR クラスターのマスターノード上にあります。Nodes ページで、emr-master ノードグループの横にある
アイコンをクリックすると、このアドレスを確認できます。 -
タスクを実行後、ページ下部の Execution Records セクションで、タスクの [操作] 列にある Log Exploration をクリックします。
-
Log Exploration タブで、タスクリログを確認できます。
Spark SQL タスク
-
SQL セッションを作成して開始します。詳細については、「SQL セッションの管理」をご参照ください。
-
Normal Network Connection:ステップ 1 で作成したネットワーク接続を選択します。
-
Spark Configuration:以下のプロパティを設定します。
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory*.*.*.*を HMS (Hive Metastore Service) のプライベート IP アドレスに置き換えます。この例では、HMS は EMR クラスターのマスターノード上にあります。このアドレスは、EMR クラスターの Nodes ページで、emr-master ノードグループの横にある
アイコンをクリックすると確認できます。
-
-
EMR Serverless Spark ページで、左側ナビゲーションウィンドウの Development をクリックします。
-
Development タブで、
アイコンをクリックします。 -
Create ダイアログボックスで、users_task などの名前を入力し、タイプをデフォルトの SparkSQL に設定してから、OK をクリックします。
-
新しいタスクエディターで、catalog、データベース、および実行中の SQL セッションを選択します。以下のクエリを入力し、実行 をクリックします。
SELECT * FROM default.my_table;説明外部メタストアを使用する SQL コードをワークフローにデプロイする際は、SQL ステートメントで
db.table_name形式でテーブル名を指定し、UI の右上隅にある Catalog オプションからcatalog_id.default形式でデフォルトデータベースを選択してください。クエリ結果は、ページ下部の Execution Results セクションに表示されます。
