全部產品
Search
文件中心

E-MapReduce:SparkSQL開發

更新時間:Nov 22, 2025

本文介紹如何在阿里雲EMR Serverless Spark環境中開發SparkSQL任務,並指導您如何訪問Spark UI以查看任務詳情。

前提條件

已建立工作空間和SQL會話執行個體,詳情請參見建立工作空間管理SQL會話

建立SQL任務

  1. 進入開發頁面。

    1. 登入E-MapReduce控制台

    2. 在左側導覽列,選擇EMR Serverless > Spark

    3. Spark頁面,單擊目標工作空間名稱。

    4. EMR Serverless Spark頁面,單擊左側導覽列中的資料開發

  2. 建立任務。

    1. 開發目錄頁簽下,單擊image(建立)表徵圖。

    2. 在彈出的對話方塊中,輸入名稱,類型選擇SparkSQL,然後單擊確定

    3. 在右上方選擇資料目錄、資料庫和一個已啟動的SQL會話執行個體。

      您也可以在下拉式清單中選擇建立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的外部表格

      以下樣本示範了如何建立一個基於OSS儲存中CSV檔案的外部表格,並執行查詢操作。本範例程式碼中的Bucket地址(oss://<bucketname>/user/)需要根據實際情況修改。

      1. 建立臨時視圖。

        基於OSS上的CSV檔案建立一個臨時視圖orders,用於後續資料分析。視圖的欄位定義如下:

        • order_id:訂單ID。

        • order_date:訂單日期和時間(例如 '2025-07-01 10:00:00')。

        • order_category:商品品類(例如 "數位"、"服飾" 等)。

        • order_revenue:訂單金額。

        CREATE TABLE orders (
          order_id      STRING,   -- 訂單 ID
          order_date    STRING,-- 訂單日期和時間
          order_category   STRING,   -- 商品 SKU ID
          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', '數位', 5999.0),
          ('o2', '2025-07-02 11:30:00', '服飾', 299.0),
          ('o3', '2025-07-03 14:45:00', '數位', 899.0),
          ('o4', '2025-07-04 09:15:00', '家居', 99.0),
          ('o5', '2025-07-05 16:20:00', '數位', 1999.0),
          ('o6', '2025-07-06 08:00:00', '服飾', 199.0),
          ('o7', '2025-07-07 12:10:00', '數位', 799.0),
          ('o8', '2025-07-08 18:30:00', '家居', 59.0),
          ('o9', '2025-07-09 20:00:00', '數位', 399.0),
          ('o10', '2025-07-10 07:45:00', '服飾', 599.0),
          ('o11', '2025-07-11 09:00:00', '數位', 1299.0),
          ('o12', '2025-07-12 13:20:00', '家居', 159.0),
          ('o13', '2025-07-13 17:15:00', '服飾', 499.0),
          ('o14', '2025-07-14 21:30:00', '數位', 999.0),
          ('o15', '2025-07-15 06:10:00', '家居', 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. 單擊運行

      返回結果資訊可以在下方的運行結果中查看。如果有異常,則可以在運行問題中查看。右側的運行記錄提供近三天的運行歷史供查閱。

    2. 確認運行無誤後,單擊右上方的發布

    3. 發布對話方塊中,可以輸入發布資訊,然後單擊確定

訪問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

在當前指令碼中搜尋關鍵詞,支援逐個定位匹配項,便於快速定位欄位或表名。

儲存任務

Ctrl + S

Control + S

手動儲存當前未發布的任務內容,防止意外丟失修改。

後續操作

建立完任務後,您可以建立工作流程來定期調度任務,詳情請參見建立工作流程。工作流程的完整調度樣本,請參見SparkSQL開發快速入門