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

E-MapReduce:MaxCompute へのデータの読み書き

最終更新日:Mar 01, 2026

E-MapReduce (EMR) Serverless Spark には、Spark DataSource V2 API に基づく組み込みの MaxCompute データソースが含まれています。MaxCompute に接続するには、開発時に必要な構成を追加する必要があります。このトピックでは、EMR Serverless Spark を使用して MaxCompute からデータを読み取り、MaxCompute にデータを書き込む方法について説明します。

背景情報

MaxCompute (旧称 Open Data Processing Service (ODPS)) は、エクサバイト規模のデータを処理できる、高速でフルマネージドのデータウェアハウスソリューションです。構造化データのストレージとバッチ処理、データウェアハウスソリューション、分析モデリングサービスを提供します。 詳細については、「MaxCompute とは」をご参照ください

前提条件

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

  • MaxCompute プロジェクトが作成され、オープンストレージが有効になっていること。詳細については、「MaxCompute プロジェクトの作成」および「オープンストレージの有効化」をご参照ください。

    このトピックの例では、オープンストレージの課金方法として従量課金を使用します。

制限事項

  • このトピックは、次のデータベースエンジンバージョンにのみ適用されます。

    • esr-4.x:esr-4.6.0 以降。

    • esr-3.x:esr-3.5.0 以降。

    • esr-2.x:esr-2.9.0 以降。

  • このトピックの操作では、MaxCompute のオープンストレージ機能を有効にする必要があります。詳細については、「オープンストレージの有効化」をご参照ください。

  • 使用する MaxCompute エンドポイントは、Storage API 機能をサポートしている必要があります。サポートしていない場合は、Storage API をサポートするエンドポイントに切り替えてください。詳細については、「データ伝送リソース」をご参照ください。

注意事項

オープンストレージで従量課金方式を使用する場合、1 TB の無料クォータを超過すると、読み書きしたデータの論理サイズに対して課金されます。

操作手順

ステップ 1:MaxCompute に接続するためのセッションの作成

SQL セッションまたは Notebook セッションを作成して MaxCompute に接続できます。詳細については、「セッションマネージャー」をご参照ください。

MaxCompute に接続するための SQL セッションの作成

  1. セッションページに移動します。

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

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

    3. Spark ページで、管理するワークスペースの名前をクリックします。

    4. EMR Serverless Spark ページの左側のナビゲーションウィンドウで、オペレーションセンター > セッション を選択します。

  2. SQL Session タブで、Create SQL Session をクリックします。

  3. [SQL セッションの作成] ページで、パラメーターを設定し、Create をクリックします。

    パラメーター

    説明

    Name

    SQL セッションの名前。例:mc_sql_compute。

    Spark Configuration

    MaxCompute に接続するための Spark 構成。

    重要

    レイヤー 3 モデルが有効になっている MaxCompute プロジェクトにアクセスするには、Spark 構成で spark.sql.catalog.odps.enableNamespaceSchema パラメーターを true に設定する必要もあります。パラメーターの詳細については、「Spark Connector」をご参照ください。スキーマの詳細については、「スキーマ操作」をご参照ください。

    spark.sql.catalog.odps                        org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog
    spark.sql.extensions                          org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions
    spark.sql.sources.partitionOverwriteMode      dynamic
    spark.hadoop.odps.tunnel.quota.name           pay-as-you-go
    spark.hadoop.odps.project.name                <project_name>
    spark.hadoop.odps.end.point                   https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api
    spark.hadoop.odps.access.id                   <accessId>
    spark.hadoop.odps.access.key                  <accessKey>

    必要に応じて、次の情報を置き換えます。

    • <project_name>:ご利用の MaxCompute プロジェクト名。

    • https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api:ご利用の MaxCompute エンドポイント。詳細については、「エンドポイント」をご参照ください。

    • <accessId>:MaxCompute サービスへのアクセスに使用する Alibaba Cloud アカウントの AccessKey ID。

    • <accessKey>:MaxCompute サービスへのアクセスに使用する Alibaba Cloud アカウントの AccessKey Secret。

MaxCompute に接続するための Notebook セッションの作成

  1. [Notebook セッション] タブに移動します。

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

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

    3. Spark ページで、目的のワークスペースを見つけ、ワークスペースの名前をクリックします。

    4. EMR Serverless Spark ページの左側のナビゲーションウィンドウで、オペレーションセンター > セッション を選択します。

    5. [Notebook セッション] タブをクリックします。

  2. Create Notebook Session ボタンをクリックします。

  3. [Notebook セッションの作成] ページで、パラメーターを設定し、Create ボタンをクリックします。

    パラメーター

    説明

    Name

    Notebook セッションの名前。例:mc_notebook_compute。

    Spark Configuration

    MaxCompute に接続するための Spark 構成。

    重要

    スキーマ機能が有効になっている MaxCompute プロジェクトにアクセスするには、Spark 構成で spark.sql.catalog.odps.enableNamespaceSchema パラメーターを true に設定する必要もあります。パラメーターの詳細については、「Spark Connector」をご参照ください。スキーマの詳細については、「スキーマ操作」をご参照ください。

    spark.sql.catalog.odps                        org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog
    spark.sql.extensions                          org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions
    spark.sql.sources.partitionOverwriteMode      dynamic
    spark.hadoop.odps.tunnel.quota.name           pay-as-you-go
    spark.hadoop.odps.project.name                <project_name>
    spark.hadoop.odps.end.point                    https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api
    spark.hadoop.odps.access.id                   <accessId>
    spark.hadoop.odps.access.key                  <accessKey>

    必要に応じて、次の情報を置き換えます。

    • <project_name>:ご利用の MaxCompute プロジェクト名。

    • https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api:ご利用の MaxCompute エンドポイント。詳細については、「エンドポイント」をご参照ください。

    • <accessId>:MaxCompute サービスへのアクセスに使用する Alibaba Cloud アカウントの AccessKey ID。

    • <accessKey>:MaxCompute サービスへのアクセスに使用する Alibaba Cloud アカウントの AccessKey Secret。

ステップ 2:MaxCompute でのデータのクエリまたは書き込み

SparkSQL を使用した MaxCompute でのデータの書き込みとクエリ

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

  2. [開発] タブで、image アイコンをクリックします。

  3. SparkSQL ジョブを作成します。

    1. 表示されるダイアログボックスで、mc_load_task などの名前を入力します。[タイプ] はデフォルトの SparkSQL のままにして、OK をクリックします。

    2. 新しい SparkSQL ジョブ (mc_load_task) のタブに次のコードをコピーします。

      CREATE TABLE odps.default.mc_table (name STRING, num BIGINT);
      
      INSERT INTO odps.default.mc_table (name, num) VALUES ('Alice', 100),('Bob', 200);
      
      SELECT * FROM odps.default.mc_table;
    3. データベースのドロップダウンリストからデータベースを選択します。コンピューティングのドロップダウンリストから、ステップ 1:MaxCompute に接続するためのセッションの作成 で作成した SQL セッション (mc_sql_compute など) を選択します。

    4. Run をクリックして SparkSQL ジョブを実行します。

      ジョブが正常に実行されると、Execution Results タブに結果が表示されます。

      image

  4. MaxCompute コンソールで作成されたテーブルを表示します。

    1. MaxCompute コンソールにログインします。左上隅でリージョンを選択します。

    2. プロジェクト管理 ページで、作成したプロジェクトを見つけ、[操作] 列の 管理 をクリックします。

    3. [テーブル] タブをクリックします。

      MaxCompute コンソールに mc_table という名前の新しいテーブルが表示されます。

      image

Notebook を使用した MaxCompute でのデータの書き込みとクエリ

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

  2. [開発] タブで、image アイコンをクリックします。

  3. Notebook を作成します。

    1. 表示されるダイアログボックスで、mc_load_task などの名前を入力し、[タイプ] で インタラクティブ開発 > Notebook を選択して、OK をクリックします。

    2. セッションのドロップダウンリストから、ステップ 1:MaxCompute に接続するためのセッションの作成 で作成した実行中の Notebook セッション (mc_notebook_compute など) を選択します。

    3. コードを記述して実行します。

      1. Python セルに、次のコマンドを入力してテーブルを作成します。

        spark.sql("""
        CREATE TABLE odps.default.mc_table (name STRING, num BIGINT);
        """)
        
      2. 新しい Python セルに、次のコマンドを入力してデータを挿入します。

        spark.sql("INSERT INTO odps.default.mc_table (name, num) VALUES ('Alice', 100),('Bob', 200);")
      3. 新しい Python セルに、次のコマンドを入力してデータをクエリします。

        spark.sql("SELECT * FROM odps.default.mc_table;").show()

        クエリが正常に実行されると、Execution Results タブに結果が表示されます。

        image

  4. MaxCompute コンソールで作成されたテーブルを表示します。

    1. MaxCompute コンソールにログインします。左上隅でリージョンを選択します。

    2. プロジェクト管理 ページで、作成したプロジェクトを見つけ、[操作] 列の 管理 をクリックします。

    3. [テーブル] タブをクリックします。

      MaxCompute コンソールに mc_table という名前の新しいテーブルが表示されます。

      image

よくある質問

MaxCompute テーブルをクエリする際に「アクセス拒否」エラーが発生するのはなぜですか?

  • 現象:MaxCompute テーブルをクエリすると、次のエラーメッセージが表示されます。

    Access Denied - Not allowed to use storage api service on current endpoint
  • 原因:このエラーは、現在のユーザーが MaxCompute Storage API サービスを使用する権限を持っていないか、使用しているエンドポイントが Storage API 機能をサポートしていないために発生します。

  • ソリューション:

    • オープンストレージ機能が有効になっているか確認します。

      MaxCompute コンソールで、テナント管理 > テナントプロパティ に移動します。機能が有効になっていない場合は、「オープンストレージの有効化」を参照して有効化および設定してください。

    • 現在のエンドポイントが Storage API 機能をサポートしているか確認します。サポートしていない場合は、Storage API をサポートするエンドポイントに切り替えてください。詳細については、「サポートされているリージョン」をご参照ください。

関連ドキュメント

このトピックでは、SparkSQL ジョブと Notebook ジョブを使用した例を示します。他の種類のジョブを使用して MaxCompute からデータを読み書きする方法については、「バッチジョブまたはストリーミングジョブの開発」をご参照ください。