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

E-MapReduce:Doris からの読み込みと Doris への書き込み

最終更新日:Jun 22, 2026

公式の Apache Doris Spark コネクタを使用し、必要な設定を追加することで、EMR Serverless Spark を Doris に接続できます。このトピックでは、EMR Serverless Spark 環境で Doris からデータを読み込み、Doris にデータを書き込む方法について説明します。

背景情報

Apache Doris は高性能なリアルタイム分析データベースであり、レポート分析、アドホッククエリ、データレイク上の連合クエリアクセラレーションなどのシナリオをサポートします。詳細については、「Apache Dorisの概要」をご参照ください。

EMR Serverless Spark は、オープンソース Spark と互換性のある高性能な Lakehouse 製品であり、エンタープライズグレードのフルマネージドデータプラットフォームサービスを提供します。Apache Doris と EMR Serverless Spark を組み合わせることで、データの読み込み、書き込み、分析を効率的に行い、エンドツーエンドのデータ処理ワークフローを実装できます。

前提条件

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

  • Doris クラスターが作成されていること。

    Doris サービスを含む EMR on ECS OLAP クラスターを作成する場合は、「クラスターの作成」をご参照ください。このトピックでは、EMR on ECS 上に作成された Doris クラスター (EMR Doris クラスターと呼びます) を例として使用します。

制限事項

EMR Serverless Spark エンジンのバージョンは、esr-2.6.0、esr-3.2.0、esr-4.2.0 以降である必要があります。

手順

手順 1:Doris Spark コネクタ JAR ファイルの取得と Alibaba Cloud OSS へのアップロード

Apache Doris の公式ドキュメントで Spark Doris Connector をご確認ください。ドキュメントには、コネクタのバージョンと Spark エンジンのバージョン間の互換性が記載されています。ご使用の Spark のバージョンが Doris Spark Connector のバージョンと互換性があることを確認する必要があります。

  1. Doris Spark コネクタのGitHubリポジトリにアクセスし、適切なバージョンをダウンロードします。

    Doris Spark コネクタの JAR ファイルは、次の命名形式に従います:spark-doris-connector-spark-${spark_version}-${connector_version}.jar。たとえば、エンジンのバージョンが esr-3.2.0 の場合は、spark-doris-connector-spark-3.4-24.0.0.jar をダウンロードします。

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

手順 2:ネットワーク接続の作成

EMR Serverless Spark が Doris サービスにアクセスするには、EMR Doris クラスターとのネットワーク接続を確立する必要があります。ネットワーク接続の詳細については、「EMR Serverless Spark と他の VPC 間のネットワーク接続」をご参照ください。

重要

セキュリティグループルールを追加するときは、送信先ポート範囲 で必要なポートのみを開いてください。 有効なポート値は 1 から 65535 の範囲です。 たとえば、HTTP ポート (8031)、RPC ポート (9061)、および Webサーバーポート (8041) を開きます。

手順 3:EMR Doris クラスターでのデータベースとテーブルの作成

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

  2. 次のコマンドを実行して、EMR Doris クラスターに接続します。

    mysql -h127.0.0.1  -P 9031 -uroot
  3. データベースとテーブルを作成します。

    CREATE DATABASE IF NOT EXISTS testdb;
    USE testdb;
    CREATE TABLE test (
        id INT, 
        name STRING
    ) PROPERTIES("replication_num" = "1");
    
  4. テストデータを挿入します。

    INSERT INTO test VALUES (1, 'a'), (2, 'b'), (3, 'c');
  5. データをクエリします。

    SELECT * FROM test;

    次の出力が返されます。

    MySQL [testdb]> SELECT * FROM test;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | a    |
    |    2 | b    |
    |    3 | c    |
    +------+------+
    3 rows in set (0.177 sec)

手順 4:Serverless Spark を使用した Doris テーブルの読み込み

SQL セッションを使用した Doris テーブルの読み込み

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

    セッションを作成する際、Engine Version ドロップダウンリストからお使いの Doris Spark Connector と一致するエンジンバージョンを選択し、Normal Network Connection にはステップ 2 で作成した接続を選択し、Spark Configuration には Doris Spark Connector をロードするために次のパラメーターを追加します。

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

    oss://<bucketname>/path/connector.jar を、手順 1 でアップロードした Doris Spark コネクタ JAR ファイルの OSS パスに置き換えます。例: oss://emr-oss/spark/spark-doris-connector-spark-3.4-24.0.0.jar

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

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

  3. 次のコードを新しい SparkSQL タブにコピーし、必要に応じてパラメーターを更新後、実行 をクリックします。

    CREATE TEMPORARY VIEW test
    USING doris
    OPTIONS(
      "table.identifier" = "testdb.test",
      "fenodes" = "<doris_address>:<http_port>",
      "user" = "<user>",
      "password" = "<password>"
    );
    SELECT * FROM test;

    各パラメーターの説明は次のとおりです。

    パラメーター

    説明

    table.identifier

    Doris のテーブル識別子。

    • 別の Doris クラスターを使用する場合は、それに応じてパラメーターを設定してください。

    • EMR on ECS 上に作成されたクラスターを使用する場合は、次の値を使用します。

      • table.identifier: この例では testdb.test を使用します。

      • <doris_address>:EMR on ECS コンソールで、Doris クラスターのNodes ページに移動し、emr-master の横にあるアイコンをクリックして、プライベート IP アドレスを確認します。

      • <http_port>: デフォルトは 8031 です。

      • <user>: デフォルトのユーザー名は root です。

      • <password>: デフォルトのパスワードは空です。

    <doris_address>

    Doris サービスを実行しているノードのプライベート IP アドレス。

    <http_port>

    Doris が HTTP リクエストをリッスンするために使用するポート番号。

    <user>

    Doris への接続に使用するユーザー名。

    <password>

    Doris への接続に使用するパスワード。

    データが正常に返された場合、設定は正しいです。

ノートブックセッションを使用した Doris テーブルの読み込み

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

    セッションを作成するときは、Engine Version ドロップダウンリストから、ご使用の Doris Spark Connector と一致するエンジンバージョンを選択します。Normal Network Connection で、ステップ 2 で作成した接続を選択します。Spark Configuration で、次のパラメーターを追加して Doris Spark Connector をロードします。

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

    oss://<bucketname>/path/connector.jar を、手順 1 でアップロードした Doris Spark コネクタ JAR ファイルの OSS パスに置き換えます。例: oss://emr-oss/spark/spark-doris-connector-spark-3.4-24.0.0.jar

  2. Development ページで、タイプ [インタラクティブ開発] > [Notebook] のタスクを作成し、右上隅で作成した Notebook セッションを選択します。

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

  3. 新しい Notebook タブに次のコードをコピーし、必要に応じてパラメーターを更新して、実行 をクリックします。

    dorisSparkDF = spark.read.format("doris") \
      .option("doris.table.identifier", "testdb.test") \
      .option("doris.fenodes", "<doris_address>:<http_port>") \
      .option("user", "<user>") \
      .option("password", "<password>") \
      .load()
    dorisSparkDF.show(3)

    各パラメーターの説明は次のとおりです。

    パラメーター

    説明

    table.identifier

    Doris のテーブル識別子。

    • 別の Doris クラスターを使用する場合は、それに応じてパラメーターを設定してください。

    • EMR on ECS 上に作成されたクラスターを使用する場合は、次の値を使用します。

      • table.identifier: この例では testdb.test を使用します。

      • <doris_address>:EMR on ECS コンソールで、Doris クラスターのNodes ページに移動し、emr-master の横にあるアイコンをクリックして、プライベート IP アドレスを確認します。

      • <http_port>: デフォルトは 8031 です。

      • <user>: デフォルトのユーザー名は root です。

      • <password>: デフォルトのパスワードは空です。

    <doris_address>

    Doris サービスを実行しているノードのプライベート IP アドレス。

    <http_port>

    Doris が HTTP リクエストをリッスンするために使用するポート番号。

    <user>

    Doris への接続に使用するユーザー名。

    <password>

    Doris への接続に使用するパスワード。

    testdb.test テーブルの最初の 3 行が返されます。データが正常に返された場合、設定は正しいです。

手順 5:Serverless Spark を使用した Doris テーブルへの書き込み

SQL セッションを使用した Doris テーブルへの書き込み

前の手順で作成した SparkSQL タブに次のコードをコピーし、必要に応じてパラメーターを更新して、実行 をクリックします。

CREATE TEMPORARY VIEW test_write
USING doris
OPTIONS(
  "table.identifier" = "testdb.test",
  "fenodes" = "<doris_address>:<http_port>",
  "user" = "<user>",
  "password" = "<password>"
);
INSERT INTO test_write VALUES (4, 'd'), (5, 'e');
SELECT * FROM test_write;

次のデータが表示された場合、書き込み操作は成功です。

期待される結果には、idname の 2 つの列があり、5 行のデータが含まれます。行 (1, a)、(2, b)、(3, c) は元の行です。行 (4, d)、(5, e) は新しく挿入された行です。

ノートブックセッションを使用した Doris テーブルへの書き込み

前の手順で作成した Notebook タブに次のコードをコピーし、必要に応じてパラメーターを更新して、実行 をクリックします。

data = [(7, 'f'), (8, 'g')]
mockDataDF = spark.createDataFrame(data, ["id", "name"])
mockDataDF.write.mode("append").format("doris") \
  .option("doris.table.identifier", "testdb.test") \
  .option("doris.fenodes", "<doris_address>:<http_port>") \
  .option("user", "<user>") \
  .option("password", "<password>") \
  .save()
dorisSparkDF = spark.read.format("doris") \
  .option("doris.table.identifier", "testdb.test") \
  .option("doris.fenodes", "<doris_address>:<http_port>") \
  .option("user", "<user>") \
  .option("password", "<password>") \
  .load()
dorisSparkDF.show(10)

次のデータが返された場合、書き込み操作は成功です。

+---+-----+
| id| name|
+---+-----+
|  1|    a|
|  2|    b|
|  3|    c|
|  7|    f|
|  8|    g|
+---+-----+