本文介紹如何在阿里雲EMR Serverless Spark環境中開發SparkSQL任務,並指導您如何訪問Spark UI以查看任務詳情。
前提條件
建立SQL任務
進入開發頁面。
在左側導覽列,選擇。
在Spark頁面,單擊目標工作空間名稱。
在EMR Serverless Spark頁面,單擊左側導覽列中的資料開發。
建立任務。
在開發目錄頁簽下,單擊
(建立)表徵圖。在彈出的對話方塊中,輸入名稱,類型選擇SparkSQL,然後單擊確定。
在右上方選擇資料目錄、資料庫和一個已啟動的SQL會話執行個體。
您也可以在下拉式清單中選擇建立SQL會話,直接建立一個新的SQL會話執行個體。SQL會話更多介紹,請參見管理SQL會話。

在建立的任務編輯器中輸入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;返回資訊如下圖所示。

樣本2:基於CSV的外部表格
以下樣本示範了如何建立一個基於OSS儲存中CSV檔案的外部表格,並執行查詢操作。本範例程式碼中的Bucket地址(
oss://<bucketname>/user/)需要根據實際情況修改。建立臨時視圖。
基於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' );插入測試資料。
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);執行複雜查詢。
基於
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;
(可選)在開發頁面右側,您可以單擊版本資訊頁簽,查看版本資訊。
您可以在此處查看或對比任務版本資訊,支援對SQL代碼內容進行版本間的對比,並將不同之處進行標記。
運行並發布任務。
單擊運行。
返回結果資訊可以在下方的運行結果中查看。如果有異常,則可以在運行問題中查看。右側的運行記錄提供近三天的運行歷史供查閱。
確認運行無誤後,單擊右上方的發布。
在發布對話方塊中,可以輸入發布資訊,然後單擊確定。
訪問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頁面。

在會話執行個體處訪問
執行完SQL語句後,您可以在會話執行個體處,選擇,系統將自動跳轉至Spark UI頁面。

快速鍵說明
為方便開發人員高效編寫和調試 SQL,平台提供以下常用快速鍵:
功能 | Windows 快速鍵 | Mac 快速鍵 | 說明 |
運行當前指令碼 |
| Control + Enter | 立即執行編輯器中全部或選中的 SQL 陳述式,等同於點擊【運行】按鈕。 |
格式化 SQL |
|
| 自動美化 SQL 代碼結構,統一縮排、換行和關鍵字大小寫,提升可讀性。適用於複雜查詢的整理。 |
尋找文本 |
|
| 在當前指令碼中搜尋關鍵詞,支援逐個定位匹配項,便於快速定位欄位或表名。 |
儲存任務 |
|
| 手動儲存當前未發布的任務內容,防止意外丟失修改。 |
後續操作
建立完任務後,您可以建立工作流程來定期調度任務,詳情請參見建立工作流程。工作流程的完整調度樣本,請參見SparkSQL開發快速入門。
> Spark UI