全部產品
Search
文件中心

DataWorks:Serverless Ray節點

更新時間:May 01, 2026

DataWorks的Serverless Ray節點支援在EMR Serverless Ray計算資源上,使用Ray分布式架構進行Python作業開發與周期性調度。本文介紹使用Serverless Ray節點的主要流程。

節點介紹

EMR Serverless Ray在Spark工作空間之上提供託管Ray計算能力,相容開源Ray介面,支援Python編程模型,適用於分散式運算、機器學習與資料處理等情境。通過DataWorks的Serverless Ray節點,您可線上編寫Python代碼並配置ray job submit提交命令,完成作業開發、調試與調度。

使用限制

  • 計算資源限制:僅支援選擇已綁定EMR Serverless Ray計算資源,並確保Serverless資源群組與該計算資源網路連通。

  • 語言限制:僅支援Python語言。

  • 運行限制:不支援單行或代碼塊單獨運行,僅支援整體提交運行。

準備工作

  • 已在目標DataWorks工作空間完成綁定EMR Serverless Ray計算資源,並確保Ray叢集處於可用狀態。

  • (可選,RAM帳號需要)進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發空間管理員(許可權較大,謹慎添加)角色許可權,新增成員的操作詳情請參見為工作空間增加空間成員

    說明

    如果您使用的是主帳號,則忽略該添加操作。

建立Serverless Ray節點

建立入口與在資料開發中建立其他節點一致,請參見節點

開發Serverless Ray節點

Serverless Ray節點的開發包含兩部分:在代碼編輯區編寫Python代碼,並在Submit命令地區配置作業提交命令。使用者建立檔案後,系統自動產生提交命令,檔案名稱為節點名稱加.py尾碼。

樣本:使用Ray估算圓周率

以下樣本使用蒙特卡洛方法估算圓周率,示範代碼區與提交命令的配合方式。

步驟一:編寫Python代碼

在代碼編輯區編寫如下Python代碼。

import ray
import random
import time
import sys

ray.init()

@ray.remote
def compute_points_in_circle(num_points: int) -> int:
    inside = 0
    for _ in range(num_points):
        x = random.uniform(0, 1)
        y = random.uniform(0, 1)
        if x * x + y * y <= 1:
            inside += 1
    return inside

def estimate_pi(total_points: int, num_workers: int = 4) -> float:
    start_time = time.time()
    points_per_worker = total_points // num_workers
    tasks = [compute_points_in_circle.remote(points_per_worker) for _ in range(num_workers)]
    results = ray.get(tasks)
    total_inside = sum(results)
    pi_estimate = 4.0 * total_inside / total_points
    print(f"Estimated π: {pi_estimate:.10f}, seconds: {time.time() - start_time:.4f}")
    return pi_estimate

if __name__ == "__main__":
    estimate_pi(total_points=int(sys.argv[1]), num_workers=4)
    ray.shutdown()

步驟二:配置Submit命令

Submit命令地區配置提交命令,例如:

ray job submit \
--working-dir "." \
-- python ss_ray.py 1000000
重要
  • 當使用本地工作目錄時 (例如 --working-dir ".")

    • -- python 後的指令檔名需與節點名稱加 .py 一致。

    • 平台會自動控制並覆蓋 --address--submission-id 和 --working-dir 參數,您無需手動設定。

  • 當使用遠程OSS路徑時 (例如 --working-dir "https://<bucket>.<endpoint>/path/to/your.zip")

    • 平台不會覆蓋您指定的 --working-dir 遠程路徑。

    • 許可權說明:您可以使用私人的OSS檔案(通常是 .zip 包)作為工作目錄。Serverless Ray 節點會自動使用當前執行任務的使用者憑證(或其扮演的RAM角色),為您的私人OSS檔案產生一個帶簽名的臨時訪問地址。

    • 前提條件:您必須確保執行本節點的使用者,對所指定的OSS路徑有讀取許可權 (oss:GetObject)。

節點內容配置說明

您可參照以下參數配置資訊,配置Serverless Ray節點內容。

配置地區

參數名稱

參數描述

Python代碼

Python代碼

編寫使用Ray架構的Python代碼。支援ray.init()初始化、@ray.remote裝飾器等Ray API。

Submit命令

提交命令

配置Ray作業的提交命令。命令格式為ray job submit [options] -- python script.py [args]

runtime-env-json

可選。配置運行時環境。例如通過pip欄位安裝額外的Python依賴包,樣本:--runtime-env-json '{"pip": ["numpy", "pandas"]}'

參數

填寫您所需傳入代碼的參數資訊。您可將該參數配置為動態參數${var}

若作業依賴多個Python檔案,可將依賴檔案建立為DataWorks Ray File類型資源並在代碼中使用##@resource_reference引用,再在--working-dir指向工作目錄的前提下組織ray job submit命令。資源建立請參見EMR資源與函數

調試Serverless Ray節點

  1. 配置回合組態。

    在節點右側回合組態中,配置以下參數資訊。

    參數名稱

    描述

    計算資源

    選擇您所綁定的Serverless Ray計算資源。

    資源組

    選擇已通過網路連通性測試的Serverless資源群組。Serverless Ray節點僅支援Serverless資源群組。

    指令碼參數

    在配置節點內容時,通過${參數名}的方式定義變數,需要在腳本參數處配置參數名參數值資訊,任務運行時會將它動態替換為真實的取值。詳情請參見調度參數來源及其運算式

  2. 調試運行節點。

    單擊保存運行執行調試。

後續步驟

  • 節點調度配置:若專案目錄下的節點需要周期性調度執行,您需要在節點右側的調度配置中設定調度策略,配置相關的調度屬性。

  • 節點發布:若任務需要發布至生產環境執行,請單擊介面image表徵圖喚起發布流程,通過該流程將任務發布至生產環境。專案目錄下的節點只有在發布至生產環境後,才會進行周期性調度。

相關文檔

引用Ray File操作可參見Lindorm Ray節點