全部產品
Search
文件中心

MaxCompute:MaxFrame作業部分提交功能

更新時間:Jun 04, 2026

本文為您介紹如何使用MaxFrame作業部分提交功能,以及計費說明。

背景資訊

MaxCompute超大規模作業,可能存在作業部分Fuxi Instances因資料長尾、死迴圈等問題長期運行,導致作業整體執行時間拖長甚至逾時失敗。在預設情況下,MaxCompute對於失敗的作業不會保留任何結果資料,造成時間、計算資源的浪費。

針對此情境,MaxFrame支援作業部分提交功能,對整體作業允許小範圍的忽略和丟失,即使在作業失敗的情況下也可獲得已成功啟動並執行Fuxi Instances結果資料。

功能特性

  • 支援的作業類型

    目前僅支援MaxCompute MaxFrame作業。

  • 核心能力

    • MaxFrame作業失敗時,會保留已成功啟動並執行Fuxi Instances結果資料。

    • 可通過設定逾時時間主動終止長尾作業,保留已成功啟動並執行Fuxi Instances結果資料。

說明

目前“部分提交”功能對於使用者主動終止(Cancel)的作業暫不生效。

使用方式

失敗作業擷取部分結果

當您開啟“部分提交”功能後,即使當前作業最終運行失敗,您仍可通過以下方式擷取已成功啟動並執行Fuxi Instances結果資料。

您需在作業層級設定以下參數,以啟用“部分提交”功能。

options.sql.settings = {
    "odps.sql.always.commit.result": "true"  # 開啟部分提交功能
}
  • (推薦)將最終結果寫入目標表

    如以下樣本作業,最終結果資料寫入目標表data_output,使用者可查看目標表,擷取部分運行成功的結果資料。

    df.mf.flatmap(
        ... # 客戶商務邏輯
    ).to_odps_table("data_output").execute()

    同時可在作業Logview中查看已成功的Fuxi Instances。

    WARNING:[0,0]  [MF_UDF_20250507084433360GZQPJR9T002_USER_UDF_xxx($0, $1, $2, $3, $4, $5)]: more optimization opportunities are
        possible if [MF_UDF_20250507084433360GZQPJR9T002_USER_UDF_xxx($0, $1, $2, $3, $4, $5)] is annotated as deterministic.
    resource cost: cpu 23.25 Core * Min, memory 29.06 GB * Min
    inputs:
        llm_mf_bj.llm_mf_bj.test_input: 87 (442569 bytes)
    outputs:
        llm_mf_bj.default.tmp_mf_20250507084433360gzqpjr9t0o2_c0d07f4412d0c87742def840ffddb d5f_0: 870 (43620 bytes, 87 files)
    --------------------------------------------CommitFileStatusInfo--------------------------------------------
    PartialCommitSummary(Because odps.sql.always.commit.result=true, and the job(SQL_0_0_0_job_0) is FAILED, so we commit partial result):
        llm_mf_bj.default.tmp_mf_20250507084433360gzqpjr9t0o2_c0d07f4412d0c87742def840ffddb d5f_0:
        Successes Commit Result FuxiInstance Count: 87
        Total Commit Result FuxiInstance Count: 100
    --------------------------------------------JOB:SQL_0_0_0_job_0--------------------------------------------
    Job run time: 139.214
    Job run mode: fuxi job 2.0
    Job run engine: execution engine
    M1:
        instance count: 87
        rerun worker count: 1
        run time: 177.844
        instance time:
            min: 9.384, max: 25.759, avg: 16.035
        input records:
            TableScan1: 87  (min: 1, max: 1, avg: 1)
        input bytes:
            TableScan1: 442569  (min: 5087, max: 5087, avg: 5087)
        output records:
            TableSink1: 870  (min: 10, max: 10, avg: 10)
        output bytes:
            TableSink1: 43620  (min: 489, max: 512, avg: 501)
        output file count:
            TableSink1: 87  (size min: 489, max: 512, avg: 501)
        metrics_output_count:
            TableFunctionScan1: 870  (min: 0, max: 10, avg: 8)
  • 通過暫存資料表查詢

    若最終結果資料未寫入目標表,可通過查詢Logview獲得MaxFrame自動產生的暫存資料表名,以擷取成功啟動並執行結果資料。

    df.mf.flatmap(
        ...
    ).execute()

    查看Logview MaxFrame暫存資料表名:在 Logview 的 Job Details 頁簽中,選擇 Progress Chart 視圖,流程圖輸出節點處即顯示自動產生的暫存資料表名(格式如 j.default.tmp_mf_<timestamp>),可用該表名查詢已成功處理的部分結果資料。

設定作業逾時擷取部分結果

對於可能出現中長尾或死迴圈等情況的作業,您可主動設定作業逾時時間,逾時後將強制終止作業,但仍會保留已成功執行的Fuxi Instances的結果資料,您同樣可在目標表或暫存資料表中擷取部分運行成功的結果資料。

開啟“部分提交”功能,並設定作業逾時時間:

options.sql.settings = {
    "odps.sql.always.commit.result": "true"  # 開啟部分提交功能
    "odps.sql.job.max.time.hours": "1"  # 設定逾時時間為 1 小時
}
說明

若作業在設定的逾時時間內失敗,仍會保留已成功執行的Fuxi Instance結果資料。

計量計費

隨用隨付

若MaxFrame作業使用隨用隨付模式運行,將按照實際使用的CU時計費。

您可通過用量明細下載作業具體使用資訊,詳細的下載和分析方法請參見MaxCompute賬單用量明細分析

訂用帳戶

若MaxFrame作業使用訂用帳戶模式運行,在MaxFrame作業運行時將按照申請量佔用訂用帳戶的資源群組資源,除此之外無單獨費用。