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

E-MapReduce:StarRocks への読み取りと書き込み

最終更新日:Jun 26, 2026

StarRocks は公式の Spark コネクタを提供し、Spark と StarRocks 間のデータ転送を可能にします。EMR Serverless Spark で必要な設定を追加することで、StarRocks インスタンスに接続できます。このトピックでは、EMR Serverless Spark を使用して StarRocks へのデータの読み取りと書き込みを行う方法を説明します。

アクセス方法

ニーズに応じて、2 つの方法で StarRocks にアクセスできます。

方法1:タスク/セッションレベルでの設定

この方法では、JDBC URL、ユーザー名、パスワードなどの StarRocks 接続情報をタスクまたはセッションごとに設定します。この方法は、次のようなシナリオに適しています。

  • 一時的またはアドホックなデータアクセス

  • 異なるタスクで異なる StarRocks クラスターにアクセスする必要がある場合

  • タスクごとにきめ細かなアクセス制御が必要な場合

方法2:データカタログによる一元化された設定

説明
  • Livy または Kyuubi を経由して送信されたジョブは、StarRocks データカタログにアクセスできません。

  • esr-4.8.0 以降、および esr-5.2.0 以降のエンジンバージョンでのみサポートされます。

EMR Serverless Spark の データカタログ 機能を使用して、StarRocks データカタログを追加します。一度設定すると、ワークスペース内のすべてのジョブとセッションは、デフォルトでデータカタログ内の承認済みデータにアクセスできるようになり、タスクごとに設定を繰り返す必要がなくなります。詳細については、「データカタログの管理」をご参照ください。

この方法は、次のようなシナリオに適しています。

  • StarRocks データへの頻繁なアクセスが必要な場合

  • 複数のタスクで同じ StarRocks アクセス設定を共有する場合

  • タスク設定を簡素化して開発効率を向上させたい場合

説明

StarRocks への長期的かつ頻繁なアクセスが必要なワークスペースでは、設定のオーバーヘッドを削減し、開発効率を向上させるために、データカタログ (方法2) の使用を推奨します。

前提条件

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

  • EMR Serverless StarRocks インスタンスが作成されていること。詳細については、「インスタンスの作成」をご参照ください。

制限事項

Serverless Spark のエンジンバージョンは、esr-2.5.0、esr-3.1.0、esr-4.1.0、またはそれ以降である必要があります。

操作手順

ステップ1:Spark コネクタ JAR の取得とアップロード

  1. お使いのエンジンバージョンに対応する Spark コネクタ JAR をダウンロードします。詳細については、「Spark コネクタを使用した StarRocks からのデータ読み取り」をご参照ください。

    説明

    エンジンバージョンが esr-4.8.0 以降および esr-5.2.0 以降の場合、Spark コネクタ JAR は組み込まれているため、この手順は省略可能です。

    この例では、Maven Central Repository からプリコンパイル済みの JAR をダウンロードします。

    説明

    コネクタ JAR ファイル名は、starrocks-spark-connector-${spark_version}_${scala_version}-${connector_version}.jar という形式です。たとえば、エンジンバージョンが esr-4.1.0 (Spark 3.5.2、Scala 2.12) で、コネクタバージョン 1.1.2 を使用する場合は、starrocks-spark-connector-3.5_2.12-1.1.2.jar を選択します。

  2. ダウンロードした Spark コネクタ JAR を OSS にアップロードします。詳細については、「シンプルアップロード」をご参照ください。

ステップ2:ネットワーク接続の追加

  1. ネットワーク情報を取得します。

    EMR Serverless StarRocks ページで、対象の StarRocks インスタンスの Instance Details ページに移動し、Virtual Private Cloud (VPC) と vSwitch の情報を取得します。

  2. ネットワーク接続を作成します。

    1. EMR Serverless Spark ページで、Spark ワークスペースの Network Connection ページに移動し、Create Network Connection をクリックします。

    2. Create Network Connection ダイアログボックスで、Name を入力し、StarRocks インスタンスの VPC と vSwitch を選択して、OK をクリックします。

      説明

      ネットワーク接続は StarRocks インスタンスと一致している必要があります。StarRocks インスタンスと同じ VPC 内にある vSwitch を選択してください。現在のアベイラビリティーゾーンで利用可能な vSwitch がない場合は、vSwitch をクリックして VPC コンソールに移動して作成します。詳細については、「VPC と vSwitch」をご参照ください。

ステップ3:データベースとテーブルの作成

  1. StarRocks インスタンスに接続します。詳細については、「EMR StarRocks Manager を使用した StarRocks インスタンスへの接続」をご参照ください。

  2. [SQL Editor]Queries ページで、File または右側の image アイコンをクリックし、OK をクリックして新しいファイルを作成します。

  3. 新しいファイルに次の SQL 文を入力し、Run をクリックします。

    CREATE DATABASE `testdb`;
    CREATE TABLE `testdb`.`score_board`
    (
        `id` int(11) NOT NULL COMMENT "",
        `name` varchar(65533) NULL DEFAULT "" COMMENT "",
        `score` int(11) NOT NULL DEFAULT "0" COMMENT ""
    )
    ENGINE=OLAP
    PRIMARY KEY(`id`)
    COMMENT "OLAP"
    DISTRIBUTED BY HASH(`id`);

ステップ4:StarRocks への読み取りと書き込み

方法1:SQL セッションと Notebook セッション

セッションタイプの詳細については、「セッションマネージャー」をご参照ください。

SQL セッション

  1. EMR Serverless Spark を使用して StarRocks にデータを書き込みます。

    1. SQL セッションを作成します。詳細については、「SQL セッションの管理」をご参照ください。

      セッションを作成する際、Spark コネクタのバージョンに対応するエンジンバージョンを選択し、Network Connection で前のステップで作成したネットワーク接続を選択し、Spark Configuration に以下のパラメーターを追加して、Spark コネクタをロードします。

      spark.emr.serverless.user.defined.jars  oss://<bucketname>/path/connector.jar

      oss://<bucketname>/path/connector.jar を、ステップ1でアップロードした Spark コネクタの OSS パスに置き換えます。例:oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar

    2. Development ページで [SparkSQL] タスクを作成します。次に、右上隅から作成した SQL セッションを選択します。

      詳細については、「SparkSQL ジョブの開発」をご参照ください。

    3. 新しい SparkSQL タブに次のコードをコピーし、必要に応じてプレースホルダーの値を置き換えてから、Run をクリックします。

      CREATE TEMPORARY VIEW score_board
      USING starrocks
      OPTIONS
      (
        "starrocks.table.identifier" = "testdb.score_board",
        "starrocks.fe.http.url" = "<fe_host>:<fe_http_port>",
        "starrocks.fe.jdbc.url" = "jdbc:mysql://<fe_host>:<fe_query_port>",
        "starrocks.user" = "<user>",
        "starrocks.password" = "<password>"
      );
      INSERT INTO `score_board` VALUES (1, "starrocks", 100), (2, "spark", 100);

      パラメーターの説明:

      • <fe_host>:EMR Serverless StarRocks インスタンスの FE ノードの内部またはパブリックエンドポイント。これは、Instance Details ページの FE 詳細 セクションで確認できます。

        • 内部エンドポイントを使用する場合、両方のサービスが同じ VPC 内にあることを確認してください。

        • パブリックエンドポイントを使用する場合、セキュリティグループのルールが必要なポートでのトラフィックを許可していることを確認してください。詳細については、「ネットワークアクセスとセキュリティ設定」をご参照ください。

      • <fe_http_port>:EMR Serverless StarRocks インスタンスの FE ノードの HTTP ポート。デフォルトは 8030 です。これは、Instance Details ページの FE 詳細 セクションで確認できます。

      • <fe_query_port>:EMR Serverless StarRocks インスタンスの FE ノードのクエリポート。デフォルトは 9030 です。これは、Instance Details ページの FE 詳細 セクションで確認できます。

      • <user>:Serverless StarRocks インスタンスのユーザー名。デフォルトでは、管理者権限を持つ admin ユーザーが提供されます。User Management ページを使用して新しいユーザーを追加して接続することもできます。ユーザーの追加方法の詳細については、「ユーザーとデータ権限の管理」をご参照ください。

      • <password><user> に対応するパスワード。

  2. EMR Serverless Spark を使用して書き込まれたデータをクエリします。

    この例では、Spark SQL タスクで test_view という名前の一時ビューを作成して score_board からデータをクエリします。新しい Spark SQL タブに次のコードをコピーし、コードを選択してから Run the selected をクリックします。

    CREATE TEMPORARY VIEW test_view
    USING starrocks
    OPTIONS
    (
       "starrocks.table.identifier" = "testdb.score_board",
       "starrocks.fe.http.url" = "<fe_host>:<fe_http_port>",
       "starrocks.fe.jdbc.url" = "jdbc:mysql://<fe_host>:<fe_query_port>",
       "starrocks.user" = "<user>",
       "starrocks.password" = "<password>"
    );
    SELECT * FROM test_view;

    出力

    クエリは 2 つのレコード (1, "starrocks", 100) と (2, "spark", 100) を返します。

Notebook セッション

  1. EMR Serverless Spark を使用して StarRocks にデータを書き込みます。

    1. Notebook セッションを作成します。詳細については、「Notebook セッションの管理」をご参照ください。

      セッションを作成する際、Spark コネクタのバージョンに対応するエンジンバージョンを選択し、Network Connection で前のステップで作成したネットワーク接続を選択し、Spark Configuration に以下のパラメーターを追加して、Spark コネクタをロードします。

      spark.emr.serverless.user.defined.jars  oss://<bucketname>/path/connector.jar

      oss://<bucketname>/path/connector.jar を、ステップ1でアップロードした Spark コネクタの OSS パスに置き換えます。例:oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar

    2. Development ページで、[Interactive Development] > [Notebook] タスクを作成し、右上隅で作成した Notebook セッションを選択します。

      詳細については、「Notebook セッションの管理」をご参照ください。

    3. Notebook の Python セルに次のコードをコピーし、Run をクリックします。

      # プレースホルダーを EMR Serverless StarRocks の設定に置き換えます。
      fe_host = "<fe_host>"
      fe_http_port = "<fe_http_port>"
      fe_query_port = "<fe_query_port>"
      user = "<user>"
      password = "<password>"
      # ビューを作成します。
      create_table_sql = f"""
      CREATE TEMPORARY VIEW score_board
      USING starrocks
      OPTIONS (
        "starrocks.table.identifier" = "testdb.score_board",
        "starrocks.fe.http.url" = "{fe_host}:{fe_http_port}",
        "starrocks.fe.jdbc.url" = "jdbc:mysql://{fe_host}:{fe_query_port}",
        "starrocks.user" = "{user}",
        "starrocks.password" = "{password}"
      )
      """
      spark.sql(create_table_sql)
      # データを挿入します。
      insert_data_sql = """
      INSERT INTO `score_board` VALUES (1, "starrocks", 100), (2, "spark", 100)
      """
      spark.sql(insert_data_sql)
      

      パラメーターの説明:

      • <fe_host>:EMR Serverless StarRocks インスタンスの FE ノードの内部またはパブリックエンドポイント。これは、Instance Details ページの FE 詳細 セクションで確認できます。

        • 内部エンドポイントを使用する場合、両方のサービスが同じ VPC 内にあることを確認してください。

        • パブリックエンドポイントを使用する場合、セキュリティグループのルールが必要なポートでのトラフィックを許可していることを確認してください。詳細については、「ネットワークアクセスとセキュリティ設定」をご参照ください。

      • <fe_http_port>:EMR Serverless StarRocks インスタンスの FE ノードの HTTP ポート。デフォルトは 8030 です。これは、Instance Details ページの FE 詳細 セクションで確認できます。

      • <fe_query_port>:EMR Serverless StarRocks インスタンスの FE ノードのクエリポート。デフォルトは 9030 です。これは、Instance Details ページの FE 詳細 セクションで確認できます。

      • <user>:Serverless StarRocks インスタンスのユーザー名。デフォルトでは、管理者権限を持つ admin ユーザーが提供されます。User Management ページを使用して新しいユーザーを追加して接続することもできます。ユーザーの追加方法の詳細については、「ユーザーとデータ権限の管理」をご参照ください。

      • <password><user> に対応するパスワード。

  2. EMR Serverless Spark を使用して書き込まれたデータをクエリします。

    新しい Python セルで、test_view という名前の一時ビューを作成して score_board テーブルをクエリします。次のコードをセルにコピーし、実行アイコン (image) をクリックして実行します。

    # ビューを作成します。
    create_view_sql=f"""
    CREATE TEMPORARY VIEW test_view
    USING starrocks
    OPTIONS (
      "starrocks.table.identifier" = "testdb.score_board",
      "starrocks.fe.http.url" = "{fe_host}:{fe_http_port}",
      "starrocks.fe.jdbc.url" = "jdbc:mysql://{fe_host}:{fe_query_port}",
      "starrocks.user" = "{user}",
      "starrocks.password" = "{password}"
    )
    """
    spark.sql(create_view_sql)
    # データをクエリします。
    query_sql="SELECT * FROM test_view"
    result_df = spark.sql(query_sql)
    result_df.show()

    出力

    +---+---------+-----+
    | id|     name|score|
    +---+---------+-----+
    |  2|    spark|  100|
    |  1|starrocks|  100|
    +---+---------+-----+

方法2:Spark バッチジョブ

  1. Spark バッチジョブを作成します。

    1. EMR Serverless Spark ページで、左側メニューにある Development をクリックします。

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

    3. 「作成」ダイアログボックスで、Name を入力し、タイプを Application > SQL に設定した後、OK をクリックします。

      ニーズに応じてタイプを調整できます。このトピックでは SQL を例とします。ジョブタイプの詳細については、「アプリケーションの開発」をご参照ください。

  2. Spark バッチジョブを使用して StarRocks への読み取りと書き込みを行います。

    1. 新しいジョブ開発ページの右上隅で、キューを選択します。

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

    2. 新しいジョブ開発ページで、以下の設定を行い、他のパラメーターはデフォルトのままにしてから、実行 をクリックします。

      パラメーター

      説明

      SQL File

      この例では、SQL セッションの SQL ステートメントが含まれている spark_sql_starrocks.sql ファイルを使用します。 ファイルを使用する前に、ダウンロードして必要に応じて設定を変更し、Artifacts ページにアップロードします。

      spark_sql_starrocks.sql のパラメーター

      パラメーターの説明:

      • <fe_host>:EMR Serverless StarRocks インスタンスの FE ノードの内部またはパブリックエンドポイント。これは、Instance Details ページの FE 詳細 セクションで確認できます。

        • 内部エンドポイントを使用する場合、両方のサービスが同じ VPC 内にあることを確認してください。

        • パブリックエンドポイントを使用する場合、セキュリティグループのルールが必要なポートでのトラフィックを許可していることを確認してください。詳細については、「ネットワークアクセスとセキュリティ設定」をご参照ください。

      • <fe_http_port>:EMR Serverless StarRocks インスタンスの FE ノードの HTTP ポート。デフォルトは 8030 です。これは、Instance Details ページの FE 詳細 セクションで確認できます。

      • <fe_query_port>:EMR Serverless StarRocks インスタンスの FE ノードのクエリポート。デフォルトは 9030 です。これは、Instance Details ページの FE 詳細 セクションで確認できます。

      • <user>:Serverless StarRocks インスタンスのユーザー名。デフォルトでは、管理者権限を持つ admin ユーザーが提供されます。User Management ページを使用して新しいユーザーを追加して接続することもできます。ユーザーの追加方法の詳細については、「ユーザーとデータ権限の管理」をご参照ください。

      • <password><user> に対応するパスワード。

      Engine Version

      Spark コネクタのバージョンに一致するエンジンバージョンを選択します。

      Normal Network Connection

      前のステップで作成したネットワーク接続を選択します。

      Spark Configuration

      Spark Configuration セクションに以下のパラメーターを追加して、Spark コネクタをロードします。

      spark.emr.serverless.user.defined.jars  oss://<bucketname>/path/connector.jar

      oss://<bucketname>/path/connector.jar を、ステップ1でアップロードした Spark コネクタの OSS パスに置き換えます。例:oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar

  3. ログ情報を表示します。

    1. 下部にある Execution Records セクションで、[Actions] 列の Details をクリックします。

    2. Log Exploration タブをクリックして、ジョブのログ情報を表示します。

      [ドライバーログ] > [Stdout] を選択して、stdout.log ファイルを表示します。ジョブが成功した場合、ログ出力には starrocks 100spark 100 が含まれていることから、データが StarRocks に書き込まれ、その後正常に読み取られたことが確認できます。

関連ドキュメント

詳細については、StarRocks の公式ドキュメントをご参照ください: