EMR Serverless Spark支援通過SQL代碼編輯和運行任務。本文帶您快速體驗SQL的建立、啟動和營運等操作。
前提條件
步驟一:建立並發布開發工作單位
任務必須先發布,然後才能在任務編排過程中使用。
-
進入資料開發頁面。
-
在左側導覽列,選擇EMR Serverless > Spark。
-
在Spark頁面,單擊目標工作空間名稱。
-
在EMR Serverless Spark頁面,單擊左側導覽列中的数据开发。
-
建立users_task任務。
-
在开发目录頁簽下,單擊
表徵圖。 -
在新建對話方塊中,輸入名稱(例如users_task),類型使用預設的SparkSQL,然後單擊确定。
-
拷貝如下代碼到新增的Spark SQL頁簽(users_task)中。
CREATE TABLE IF NOT EXISTS students ( name VARCHAR(64), address VARCHAR(64) ) USING PARQUET PARTITIONED BY (data_date STRING) OPTIONS ( 'path'='oss://<bucketname>/path/' ); INSERT OVERWRITE TABLE students PARTITION (data_date = '${ds}') VALUES ('Ashua Hill', '456 Erica Ct, Cupertino'), ('Brian Reed', '723 Kern Ave, Palo Alto');目前支援以下基礎日期變數,預設為昨天。
變數
資料類型
說明
{data_date}
str
表示日期資訊的變數,格式為
YYYY-MM-DD。例如,2023-09-18。
{ds}
str
{dt}
str
{data_date_nodash}
str
表示日期資訊的變數,格式為
YYYYMMDD。例如,20230918。
{ds_nodash}
str
{dt_nodash}
str
{ts}
str
表示時間戳記,格式為
YYYY-MM-DDTHH:MM:SS。例如,2023-09-18T16:07:43。
{ts_nodash}
str
表示時間戳記,格式為
YYYYMMDDHHMMSS。例如,20230918160743。
-
在資料庫下拉式清單中選擇一個資料庫,在會話下拉式清單中選擇一個已啟動的會話執行個體。
您也可以在下拉式清單中選擇创建 SQL 会话,直接建立一個新的會話執行個體。會話管理更多介紹,請參見管理SQL會話。
-
單擊运行,執行建立的任務。
返回結果資訊可以在下方的运行结果中查看。如果有異常,則可以在运行问题中查看。
-
-
發布users_task任務。
說明任務指定的參數會伴隨任務一起發布,並成為產線運行任務時使用的參數;而在SQL編輯器中執行的任務則使用會話中的參數。
-
在新增的Spark SQL頁簽中,單擊发布。
-
在彈出的對話方塊中,可以輸入發布資訊,然後單擊确定。
-
-
建立users_count任務。
-
在开发目录頁簽下,單擊
表徵圖。 -
在新建對話方塊中,輸入名稱(例如users_count),類型使用預設的SparkSQL,單擊确定。
-
拷貝如下代碼到新增的Spark SQL任務頁簽(users_count)中。
SELECT COUNT(1) FROM students; -
在資料庫下拉式清單中選擇一個資料庫,在會話下拉式清單中選擇一個已啟動的會話執行個體。
您也可以在下拉式清單中選擇创建 SQL 会话,直接建立一個新的會話執行個體。會話管理更多介紹,請參見管理SQL會話。
-
單擊运行,執行建立的任務。
返回結果資訊可以在下方的运行结果中查看。如果有異常,則可以在运行问题中查看。
-
-
發布users_count任務。
說明任務指定的參數會伴隨任務一起發布,並成為產線運行任務時使用的參數;而在SQL編輯器中執行的任務則使用會話中的參數。
-
在新增的Spark SQL任務頁簽中,單擊发布。
-
在彈出的對話方塊中,可以輸入發布資訊,然後單擊确定。
-
步驟二:建立工作流程及其節點
-
在左側導覽列中,單擊任务编排。
-
在任务编排頁面,單擊创建工作流。
-
在创建工作流面板中,輸入工作流名称(例如,spark_workflow_task),然後單擊下一步。
其他设置地區的參數,請根據您的實際情況配置,更多參數資訊請參見管理工作流程。
-
添加users_task節點。
-
在建立的節點畫布中,單擊添加节点。
-
彈出添加节点面板,在来源文件路径下拉式清單中選擇發行的任務users_task,然後單擊保存。
-
-
添加users_count節點。
-
單擊添加节点。
-
彈出添加节点面板,在来源文件路径下拉式清單中選擇發行的任務users_count,在上游节点下拉式清單中選擇users_task,單擊保存。
-
-
在建立的節點畫布中,單擊发布工作流。
此時畫布中包含 users_task 和 users_count 兩個 SQL 類型節點,兩者通過箭頭串連表示執行依賴關係。
-
在发布對話方塊中,可以輸入發布資訊,然後單擊确定。
步驟三:運行工作流程
-
在任务编排頁面,單擊建立工作流程(例如,spark_workflow_task)的工作流名称。
-
在工作流实例列表頁面,單擊运行。
說明在配置了調度周期後,您也可以在任务编排頁面通過左側的開關按鈕啟動調度。
-
在运行工作流對話方塊中,單擊确定。
步驟四:查看執行個體狀態
-
在任务编排頁面,單擊目標工作流程名稱(例如,spark_workflow_task)。
-
在工作流实例列表頁面,您可以查看對應的所有工作流程執行個體,以及各工作流程執行個體的已耗用時間、運行狀態等。
頁面上方以柱狀圖展示各日期的工作流程運行狀態分布,下方表格還包含工作流程運行ID、版本、運行方式、節點數量、調度時間、啟動時間和結束時間等列。
-
單擊工作流实例列表地區的工作流运行 ID,或單擊上方的工作流实例图頁簽,可以查看對應的工作流程執行個體圖。
-
單擊目標節點執行個體,在彈出的節點資訊框中,您可以根據需要操作或查看資訊。
關於此部分內容的相關操作及詳細介紹,請參見查看節點執行個體。
節點資訊框中展示任務的啟動時間、結束時間、運行狀態、已耗用時間等運行詳情,並提供重跑、終止運行、置成功等操作按鈕。
例如,單擊Spark UI跳轉至Spark Jobs頁面,可以查看Spark任務的即時資訊。
Spark Jobs 頁面展示已完成作業列表,包含 Job Id、Description、Submitted、Duration、Stages: Succeeded/Total、Tasks: Succeeded/Total 等列,可確認各作業的執行狀態與耗時。
-
單擊任务运行 ID,進入任务历史頁面,可以查看指標、診斷和日誌資訊。
在任務總覽頁簽的基礎資訊地區,可查看運行狀態、任務名稱、任務運行 ID、任務類型、引擎版本及 Fusion 加速狀態等資訊。
步驟五:工作流程營運
在任务编排頁面,單擊目標工作流程名稱,進入工作流实例列表頁面。您可以:
-
在工作流信息地區,可以編輯部分參數。
-
在工作流实例列表地區,可以查看所有工作流程。單擊工作流运行 ID,可以進入工作流程執行個體圖頁面。
工作流程執行個體圖頁面展示任務節點的依賴關係及運行狀態。樣本中,users_task(SQL)為上遊節點,users_count(SQL)為下遊節點,兩者通過連線表示依賴關係,節點均顯示運行成功(綠色對勾)。
步驟六:查看資料
-
在左側導覽列中,單擊数据开发。
-
建立SparkSQL開發,然後輸入並運行以下命令查看錶的詳細資料。
SELECT * FROM students;返回資訊如下。
返回結果包含 name、address、data_date 三列,共兩條記錄:Ashua Hill(地址:456 Erica Ct, Cupertino,日期:2024-01-01)和 Brian Reed(地址:723 Kern Ave, Palo Alto,日期:2024-01-01)。