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

E-MapReduce:SparkSQL 開発

最終更新日:Nov 23, 2025

このトピックでは、Alibaba Cloud E-MapReduce (EMR) Serverless Spark 環境で SparkSQL タスクを開発する方法について説明します。このトピックでは、Spark UI にアクセスしてタスクの詳細を表示する方法についても説明します。

前提条件

ワークスペースと SQL セッションインスタンスが作成されている必要があります。詳細については、「ワークスペースの作成」および「SQL セッションの管理」をご参照ください。

SQL タスクの作成

  1. 開発ページに移動します。

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

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

    3. [Spark] ページで、ターゲットワークスペースの名前をクリックします。

    4. [EMR Serverless Spark] ページで、左側のナビゲーションウィンドウにある [データ開発] をクリックします。

  2. タスクを作成します。

    1. [開発フォルダー] タブで、image (作成) アイコンをクリックします。

    2. 表示されるダイアログボックスで、[名前] を入力し、[タイプ] を [SparkSQL] に設定して、[OK] をクリックします。

    3. 右上隅で、データカタログ、データベース、および実行中の SQL セッションインスタンスを選択します。

      ドロップダウンリストから [SQL セッションの作成] を選択して、新しい SQL セッションインスタンスを作成することもできます。詳細については、「SQL セッションの管理」をご参照ください。

      image

    4. 新しいタスクのエディターに SQL 文を入力します。

      例 1: 基本的な SQL 操作

      次の例は、データベースを作成し、データベースに切り替え、テーブルを作成し、データを挿入し、クエリを実行する方法を示しています。

      create DATABASE test_sql;
      
      use test_sql;
      
      CREATE TABLE IF NOT EXISTS my_table (id INT, name STRING);
      
      INSERT INTO my_table VALUES(1, 'Alice'),(2, 'Bob');
      
      SELECT * FROM my_table WHERE id > 1;

      結果を次の図に示します。

      image

      例 2: CSV ベースの外部テーブル

      次の例は、Object Storage Service (OSS) の CSV ファイルに基づいて外部テーブルを作成し、クエリを実行する方法を示しています。サンプルコードでは、バケットアドレス (oss://<bucketname>/user/) を実際のバケットアドレスに置き換える必要があります。

      1. 一時ビューを作成します。

        後続のデータ分析のために、OSS の CSV ファイルに基づいて orders という名前の一時ビューを作成します。ビューのフィールドは次のように定義されます。

        • order_id: 注文 ID。

        • order_date: 注文の日時。例: '2025-07-01 10:00:00'

        • order_category: 製品カテゴリ。例: "Electronics" または "Apparel"。

        • order_revenue: 注文金額。

        CREATE TABLE orders (
          order_id      STRING,   -- 注文 ID
          order_date    STRING,   -- 注文の日時
          order_category   STRING,   -- 製品カテゴリ
          order_revenue DOUBLE    -- 注文金額
        )
        USING CSV
        OPTIONS (
          path 'oss://<bucketname>/user/', 
          header 'true'                             
        );
      2. テストデータを挿入します。

        INSERT OVERWRITE TABLE orders VALUES
          ('o1', '2025-07-01 10:00:00', 'Electronics', 5999.0),
          ('o2', '2025-07-02 11:30:00', 'Apparel', 299.0),
          ('o3', '2025-07-03 14:45:00', 'Electronics', 899.0),
          ('o4', '2025-07-04 09:15:00', 'Home Goods', 99.0),
          ('o5', '2025-07-05 16:20:00', 'Electronics', 1999.0),
          ('o6', '2025-07-06 08:00:00', 'Apparel', 199.0),
          ('o7', '2025-07-07 12:10:00', 'Electronics', 799.0),
          ('o8', '2025-07-08 18:30:00', 'Home Goods', 59.0),
          ('o9', '2025-07-09 20:00:00', 'Electronics', 399.0),
          ('o10', '2025-07-10 07:45:00', 'Apparel', 599.0),
          ('o11', '2025-07-11 09:00:00', 'Electronics', 1299.0),
          ('o12', '2025-07-12 13:20:00', 'Home Goods', 159.0),
          ('o13', '2025-07-13 17:15:00', 'Apparel', 499.0),
          ('o14', '2025-07-14 21:30:00', 'Electronics', 999.0),
          ('o15', '2025-07-15 06:10:00', 'Home Goods', 299.0);
      3. 複雑なクエリを実行します。

        orders テーブルに対して複雑なクエリを実行し、過去 15 日間のさまざまなカテゴリの販売実績統計を収集します。クエリには次の情報が含まれます。

        • 注文数: 各カテゴリの総注文数。

        • 総売上 (GMV): 各カテゴリの注文金額の合計。

        • 平均注文額: 各カテゴリの平均注文額。

        • 最新の注文時間: 各カテゴリの最新の注文の時間。

        SELECT 
            order_category,                                
            COUNT(order_id) AS order_count,        
            SUM(order_revenue) AS gmv,             
            AVG(order_revenue) AS avg_order_amount,
            MAX(order_date) AS latest_order_date    
        FROM 
            orders
        WHERE 
            CAST(order_date AS TIMESTAMP) BETWEEN '2025-07-01' AND '2025-07-15'
        GROUP BY 
            order_category
        HAVING 
            SUM(order_revenue) > 1000                     
        ORDER BY 
            gmv DESC,                                    
            order_category ASC;

    5. (任意) 開発ページの右側で、[バージョン情報] タブをクリックしてバージョンの詳細を表示します。

      このタブでは、タスクのバージョンを表示および比較できます。プラットフォームは、バージョン間の SQL コードの違いをハイライト表示します。

  3. タスクを実行して公開します。

    1. [実行] をクリックします。

      結果は [実行結果] タブに表示されます。エラーが発生した場合は、[実行の問題] タブで詳細を表示できます。右側の実行履歴には、過去 3 日間のレコードが表示されます。

    2. タスクが正しく実行されることを確認したら、右上隅の [公開] をクリックします。

    3. [公開] ダイアログボックスで、リリースノートを入力して [OK] をクリックできます。

Spark UI へのアクセス

Spark UI を使用すると、タスクの実行ステータス、リソース使用量、ログ情報などの詳細を表示できます。この情報は、Spark タスクの分析と最適化に役立ちます。

結果エリアからのアクセス

説明

この機能は、次のエンジンバージョンでのみサポートされています。

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

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

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

SQL 文が実行された後、[実行結果] タブの下部にある [Spark UI] をクリックします。システムは自動的に Spark UI ページにリダイレクトします。

image

セッションインスタンスからのアクセス

SQL 文が実行された後、セッションインスタンスを見つけて、image > [Spark UI] を選択します。システムは自動的に Spark UI ページにリダイレクトします。

image

キーボードショートカット

プラットフォームは、開発者が SQL を効率的に記述およびデバッグするのに役立つ次のキーボードショートカットを提供します。

機能

Windows ショートカット

Mac ショートカット

説明

現在のスクリプトを実行

Ctrl + Enter

Control + Enter

エディター内のすべてまたは選択した SQL 文を実行します。これは、[実行] ボタンをクリックするのと同じです。

SQL のフォーマット

Ctrl + P

Control + P

SQL コードの構造を自動的にフォーマットします。インデント、改行、キーワードの大文字と小文字を標準化して、読みやすさを向上させます。これは、複雑なクエリを整理するのに役立ちます。

テキストの検索

Ctrl + F

Control + F

現在のスクリプトでキーワードを検索します。一致する各項目を 1 つずつ見つけることができます。これにより、フィールド名やテーブル名をすばやく見つけることができます。

タスクの保存

Ctrl + S

Control + S

変更が誤って失われるのを防ぐために、現在の未公開タスクのコンテンツを手動で保存します。

次のステップ

タスクを作成した後、ワークフローを作成してタスクを定期的に実行するようにスケジュールできます。詳細については、「ワークフローの作成」をご参照ください。ワークフローのスケジューリングの完全な例については、「SparkSQL 開発のクイックスタート」をご参照ください。