ネットワーク接続機能を使用すると、Serverless Spark とお使いの Virtual Private Cloud (VPC) 間の接続を確立できます。この接続により、VPC 内のデータソースやサーバーにアクセスしたり、他のサービスを呼び出したりできます。このトピックでは、ネットワーク接続を構成して、Spark SQL および Application JAR ジョブを VPC 内の Hive Metastore (HMS) に接続する方法の例を示します。
前提条件
データソースを準備する必要があります。このトピックでは、DataLake クラスターを例として使用します。クラスターは EMR on ECS ページで作成し、Hive サービスを含め、[メタデータ] に [内蔵 MySQL] データベースを使用する必要があります。詳細については、「クラスターの作成」をご参照ください。
制限事項
現在、次のゾーンの vSwitch のみを使用できます。
ステップ 1: ネットワーク接続の追加
ネットワーク接続ページに移動します。
EMR コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[Spark] ページで、対象のワークスペースの名前をクリックします。
[EMR Serverless Spark] ページで、左側のナビゲーションウィンドウにある ネットワーク接続をクリックします。
[ネットワーク接続] ページで、[ネットワーク接続の追加] をクリックします。
[ネットワーク接続の追加] ダイアログボックスで、パラメーターを設定し、[OK] をクリックします。
パラメーター
説明
接続名
新しい接続の名前を入力します。
VPC
EMR クラスターと同じ VPC を選択します。
利用可能な VPC がない場合は、[VPC の作成] をクリックして VPC コンソールに移動し、VPC を作成します。詳細については、「VPC と vSwitch」をご参照ください。
説明Serverless Spark がインターネットにアクセスする必要がある場合は、ネットワーク接続がパブリックネットワークアクセス権を持っていることを確認してください。たとえば、VPC にインターネット NAT ゲートウェイをデプロイできます。これにより、Serverless Spark インスタンスはゲートウェイを介してインターネットにアクセスできます。詳細については、「インターネット NAT ゲートウェイの SNAT 機能を使用してインターネットにアクセスする」をご参照ください。
VSwitch
EMR クラスターと同じ VPC 内の vSwitch を選択します。
現在のゾーンで利用可能な vSwitch がない場合は、[仮想スイッチ] をクリックして VPC コンソールに移動し、vSwitch を作成します。詳細については、「vSwitch の作成と管理」をご参照ください。
重要特定のゾーンの vSwitch のみを選択できます。詳細については、「制限事項」をご参照ください。
ネットワーク接続の [ステータス] が [成功] に変わると、ネットワーク接続が追加されます。

ステップ 2: EMR クラスターのセキュリティグループルールを追加する
ネットワーク接続で指定された vSwitch の CIDR ブロックを取得します。
VPC コンソールにログインし、[VSwitches] ページに移動して vSwitch の CIDR ブロックを取得できます。

セキュリティグループルールを追加します。
EMR on ECS コンソールにログインします。
[EMR On ECS] ページで、対象クラスターの ID をクリックします。
[基本情報] タブの [セキュリティ] セクションで、[クラスターセキュリティグループ] の横にあるリンクをクリックします。
[セキュリティグループの詳細] ページの [アクセスルール] セクションで、[ルールの追加] をクリックします。次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
プロトコル
許可するネットワーク通信プロトコルを指定します。デフォルトは TCP です。
説明ネットワーク接続が Kerberos 認証に使用される場合は、UDP プロトコルを選択し、ポート 88 を開きます。Kerberos 認証の詳細については、「Kerberos 認証を有効にする」をご参照ください。
ソース
前のステップで取得した vSwitch の CIDR ブロックを入力します。
重要外部攻撃によるセキュリティリスクを防ぐため、[Authorization Object] を 0.0.0.0/0 に設定しないでください。
宛先 (このインスタンス)
アクセスを許可する宛先ポートを指定します。例: 9083。
(オプション) ステップ 3: Hive サービスに接続してテーブルデータをクエリする
すでに Hive テーブルを作成して設定している場合は、このステップをスキップできます。
Secure Shell (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 ジョブを使用する場合は、リソースファイルを準備する必要があります。SparkSQL ジョブタイプを使用する場合は、このステップをスキップできます。
ローカルマシンで新しい Maven プロジェクトを作成します。
mvn packageコマンドを実行します。プロジェクトがコンパイルおよびパッケージ化されると、sparkDataFrame-1.0-SNAPSHOT.jar ファイルが生成されます。対象のワークスペースの EMR Serverless Spark ページで、左側のナビゲーションウィンドウにある [ファイル管理] をクリックします。
[ファイル管理] ページで、[ファイルのアップロード] をクリックします。
sparkDataFrame-1.0-SNAPSHOT.jarファイルをアップロードします。
ステップ 5: ジョブの作成と実行
JAR ジョブ
EMR Serverless Spark ページで、左側のナビゲーションウィンドウにある [データ開発] をクリックします。
[作成] をクリックします。
名前を入力し、ジョブタイプとして を選択し、[OK] をクリックします。
新しいジョブ開発タブで、次のパラメーターを設定し、他のパラメーターはデフォルト設定のままにして、[実行] をクリックします。
パラメーター
説明
メイン JAR リソース
前のステップでアップロードしたリソースファイルを選択します。例: sparkDataFrame-1.0-SNAPSHOT.jar。
メインクラス
Spark ジョブを送信するときに指定するメインクラスです。この例では com.example.DataFrameExample を使用します。
ネットワーク接続
ステップ 1 で追加したネットワーク接続の名前を選択します。
Spark 設定
次のパラメーターを設定します。
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactoryこのパラメーターでは、
*.*.*.*は HMS サービスのプライベート IP アドレスです。実際の IP アドレスに置き換えてください。この例では、EMR クラスターのマスターノードのプライベート IP アドレスを使用します。この IP アドレスは、EMR クラスターの [ノード管理] ページで確認できます。emr-master ノードグループの横にある
アイコンをクリックすると、IP アドレスが表示されます。ジョブが実行された後、ページ下部の [実行履歴] セクションに移動し、[アクション] 列の [ログ詳細] をクリックします。
[ログ詳細] タブで、ログを表示できます。
SparkSQL ジョブ
SQL セッションを作成して開始します。詳細については、「SQL セッションの管理」をご参照ください。
ネットワーク接続: ステップ 1 で追加したネットワーク接続を選択します。
Spark 設定: 次のパラメーターを設定します。
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactoryこのコードでは、
*.*.*.*は HSM サービスの内部 IP アドレスを表します。実際の IP アドレスに置き換えてください。この例では、EMR クラスターのマスターノードの内部 IP アドレスを使用します。この IP アドレスは、EMR クラスターの [ノード管理] ページで、emr-master ノードグループの横にある
アイコンをクリックして取得できます。
EMR Serverless Spark ページで、左側のナビゲーションウィンドウにある [データ開発] をクリックします。
[開発] タブで、
アイコンをクリックします。[作成] ダイアログボックスで、users_task などの名前を入力し、タイプはデフォルトの [SparkSQL] のままにして、[OK] をクリックします。
新しいジョブ開発タブで、カタログ、データベース、および実行中の SQL セッションインスタンスを選択します。次に、次のコマンドを入力し、[実行] をクリックします。
SELECT * FROM default.my_table;説明外部メタストアに基づく SQL コードをワークフローにデプロイする場合、SQL 文でテーブル名が
db.table_name形式で指定されていることを確認してください。また、右上隅の [カタログ] オプションからデフォルトのデータベースを選択する必要があります。形式はcatalog_id.defaultである必要があります。返された情報は、ページ下部の [実行結果] セクションに表示されます。
