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

E-MapReduce:EMR Serverless Spark を他の VPC に接続する

最終更新日:Jul 18, 2026

ネットワーク接続により、Serverless Spark がご利用の VPC (Virtual Private Cloud) 内のデータソース、サーバー、およびサービスにアクセスできるようになります。本ガイドでは、Spark SQL タスクおよび JAR タスクを VPC 内の Hive Metastore (HMS) に接続することで、ネットワーク接続を設定する手順を説明します。

前提条件

データソースが準備済みである必要があります。本例では、EMR on ECS ページで作成したデータレイククラスターを使用します。このクラスターには Hive サービスが含まれており、その MetadataBuilt-in MySQL に保存されています。詳細については、「クラスターの作成」をご参照ください。

制限事項

vSwitch は以下のアベイラビリティゾーンでのみサポートされます。

  • 中国本土

    リージョン名

    リージョン ID

    アベイラビリティゾーン名

    中国 (杭州)

    cn-hangzhou

    • ゾーン H

    • ゾーン I

    • ゾーン J

    中国 (上海)

    cn-shanghai

    • ゾーン L

    • ゾーン F

    • ゾーン G

    中国 (北京)

    cn-beijing

    • ゾーン F

    • ゾーン G

    • ゾーン H

    • ゾーン I

    • ゾーン K

    中国 (深セン)

    cn-shenzhen

    • ゾーン E

    • ゾーン F

    中国 (香港)

    cn-hongkong

    • ゾーン B

    • ゾーン C

  • その他の国と地域

    リージョン名

    リージョン ID

    アベイラビリティゾーン名

    ドイツ (フランクフルト)

    eu-central-1

    • ゾーン A

    • ゾーン B

    インドネシア (ジャカルタ)

    ap-southeast-5

    • ゾーン A

    • ゾーン B

    シンガポール

    ap-southeast-1

    • ゾーン B

    • ゾーン C

    米国 (バージニア)

    us-east-1

    • ゾーン A

    • ゾーン B

    米国 (シリコンバレー)

    us-west-1

    • ゾーン A

    • ゾーン B

    日本 (東京)

    ap-northeast-1

    • ゾーン B

    • ゾーン C

    メキシコ (ケレタロ)

    na-south-1

    ゾーン A

ステップ 1:ネットワーク接続の作成

  1. ネットワーク接続ページに移動します。

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

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

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

    4. EMR Serverless Spark ページの左側ナビゲーションウィンドウで、Normal Network Connection をクリックします。

  2. Normal Network Connection ページで、Create Network Connection をクリックします。

  3. 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 は特定のゾーンでのみ選択できます。詳細については、「制限事項」をご参照ください。

    ネットワーク接続の StatusSucceeded に変化すると、ネットワーク接続が作成されたことになります。

    image

ステップ 2:セキュリティグループルールの追加

  1. ネットワーク接続で使用する vSwitch の CIDR ブロックを取得します。

    VPC コンソール にログインし、vSwitch ページに移動して、該当 vSwitch の CIDR ブロックを確認します。

    image

  2. セキュリティグループルールを追加します。

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

    2. EMR on ECS ページで、対象クラスターのクラスター ID をクリックします。

    3. 基本情報 ページの Security セクションで、Cluster Security Group の横にあるリンクをクリックします。

    4. セキュリティグループ詳細 ページの ルール セクションで、Add Rule をクリックし、以下のパラメーターを設定してから、OK をクリックします。

      パラメーター

      説明

      プロトコル

      許可するネットワークプロトコルです。デフォルトは TCP です。

      説明

      ネットワーク接続で Kerberos 認証を使用する場合、UDP を選択し、ポート 88 をオープンすることを推奨します。Kerberos 認証の詳細については、「Kerberos 認証の有効化」をご参照ください。

      ソース

      前の手順で取得した vSwitch CIDR ブロックを入力します。

      重要

      セキュリティリスクを回避するため、Authorization Object0.0.0.0/0 に設定しないでください。

      宛先 (現在のインスタンス)

      オープンする宛先ポートです。例:9083。

(オプション)ステップ 3:Hive への接続とデータのクエリ

Hive テーブルがすでに存在する場合は、この手順をスキップしてください。

  1. SSH を使用してクラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。

  2. Hive コマンドラインを起動します。

    hive
  3. テーブルを作成します。

    CREATE TABLE my_table (id INT,name STRING);
  4. テーブルにデータを挿入します。

    INSERT INTO my_table VALUES (1, 'John'); 
    INSERT INTO my_table VALUES (2, 'Jane');
  5. データをクエリします。

    SELECT * FROM my_table;

(オプション)ステップ 4:JAR アーティファクトのビルドとアップロード

JAR タスクを実行するには、事前にアーティファクトを準備する必要があります。Spark SQL タスクの場合は、この手順をスキップしてください。

  1. ローカルマシンで Maven プロジェクトを作成します。

    プロジェクトには以下が含まれます。

    package com.example;
    
    import org.apache.spark.sql.Dataset;
    import org.apache.spark.sql.Row;
    import org.apache.spark.sql.SparkSession;
    
    public class DataFrameExample {
        public static void main(String[] args) {
            // Hive サポートを有効にして SparkSession を作成します。
            SparkSession spark = SparkSession.builder()
                    .appName("HMSQueryExample")
                    .enableHiveSupport()
                    .getOrCreate();
    
            // クエリを実行します。
            Dataset<Row> result = spark.sql("SELECT * FROM default.my_table");
    
            // クエリ結果を出力します。
            result.show();
    
            // SparkSession を停止します。
            spark.stop();
        }
    }

    pom.xml ファイルには以下が含まれます。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>sparkDataFrame</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <spark.version>3.3.1</spark.version>
            <scala.binary.version>2.12</scala.binary.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
        </dependencies>
    </project>
  2. mvn package コマンドを実行してプロジェクトをパッケージ化します。このコマンドにより、sparkDataFrame-1.0-SNAPSHOT.jar ファイルが生成されます。

  3. ワークスペースの EMR Serverless Spark ページで、左側ナビゲーションウィンドウの Artifacts をクリックします。

  4. Artifacts ページで、Upload File をクリックします。

  5. ローカルマシンから sparkDataFrame-1.0-SNAPSHOT.jar ファイルをアップロードします。

ステップ 5:タスクの作成と実行

JAR タスク

  1. EMR Serverless Spark ページで、左側ナビゲーションウィンドウの Development をクリックします。

  2. Create をクリックします。

  3. 名前を入力し、タイプとして Application > JAR を選択し、OK をクリックします。

  4. タスクエディターで、以下のパラメーターを設定します。その他のパラメーターはデフォルト値のままにしてください。その後、実行 をクリックします。

    パラメーター

    説明

    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 ノードグループの横にある image アイコンをクリックすると、このアドレスを確認できます。

  5. タスクを実行後、ページ下部の Execution Records セクションで、タスクの [操作] 列にある Log Exploration をクリックします。

  6. Log Exploration タブで、タスクリログを確認できます。

Spark SQL タスク

  1. 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 ノードグループの横にある image アイコンをクリックすると確認できます。

  2. EMR Serverless Spark ページで、左側ナビゲーションウィンドウの Development をクリックします。

  3. Development タブで、image アイコンをクリックします。

  4. Create ダイアログボックスで、users_task などの名前を入力し、タイプをデフォルトの SparkSQL に設定してから、OK をクリックします。

  5. 新しいタスクエディターで、catalog、データベース、および実行中の SQL セッションを選択します。以下のクエリを入力し、実行 をクリックします。

    SELECT * FROM default.my_table;
    説明

    外部メタストアを使用する SQL コードをワークフローにデプロイする際は、SQL ステートメントで db.table_name 形式でテーブル名を指定し、UI の右上隅にある Catalog オプションから catalog_id.default 形式でデフォルトデータベースを選択してください。

    クエリ結果は、ページ下部の Execution Results セクションに表示されます。

    image