All Products
Search
Document Center

MaxCompute:Pengiriman sebagian untuk pekerjaan MaxFrame

Last Updated:Jun 10, 2026

Topik ini menjelaskan cara menggunakan fitur pengiriman sebagian untuk pekerjaan MaxFrame dan penagihannya.

Latar Belakang

Pada pekerjaan MaxCompute berskala besar, beberapa instans Fuxi mungkin berjalan lama karena tugas long-tail atau loop tak hingga. Hal ini dapat memperpanjang eksekusi pekerjaan atau bahkan menyebabkan kegagalannya. Secara default, MaxCompute tidak menyimpan data hasil apa pun dari pekerjaan yang gagal, sehingga membuang waktu dan sumber daya komputasi.

Untuk mengatasi skenario ini, MaxFrame mendukung fitur partial submission. Fitur ini mentoleransi kegagalan kecil atau kehilangan data, sehingga Anda dapat mengambil hasil dari instans Fuxi yang berhasil meskipun pekerjaan tersebut gagal.

Fitur

  • Jenis pekerjaan yang didukung

    Hanya pekerjaan MaxFrame MaxCompute yang didukung.

  • Kemampuan inti

    • Jika pekerjaan MaxFrame gagal, hasil dari instans Fuxi yang berhasil tetap disimpan.

    • Anda dapat menetapkan timeout untuk secara proaktif menghentikan pekerjaan long-tail dan menyimpan hasil dari instans Fuxi yang berhasil.

Catatan

Saat ini, fitur partial submission tidak berlaku untuk pekerjaan yang dibatalkan secara manual.

Penggunaan

Ambil hasil sebagian dari pekerjaan yang gagal

Setelah partial submission diaktifkan, Anda dapat mengambil hasil dari instans Fuxi yang berhasil meskipun pekerjaan gagal.

Tetapkan parameter berikut di tingkat pekerjaan untuk mengaktifkan fitur partial submission.

options.sql.settings = {
    "odps.sql.always.commit.result": "true"  # Aktifkan partial submission.
}
  • (Direkomendasikan) Tulis hasil akhir ke tabel tujuan

    Pada contoh berikut, pekerjaan menulis hasil akhirnya ke tabel tujuan data_output. Anda kemudian dapat melakukan kueri terhadap tabel ini untuk mengambil hasil sebagian.

    df.mf.flatmap(
        ... # Logika bisnis Anda di sini
    ).to_odps_table("data_output").execute()

    Anda juga dapat melihat instans Fuxi yang berhasil di Logview pekerjaan.

    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:
        Successfully committed Fuxi instance count: 87
        Total Fuxi instance 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)
  • Lakukan kueri menggunakan tabel temporary

    Jika pekerjaan tidak menulis hasil ke tabel tujuan, Anda dapat menemukan nama tabel temporary yang dibuat otomatis di Logview. Anda kemudian dapat menggunakan nama tabel tersebut untuk mengambil hasil sebagian.

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

    Untuk menemukan nama tabel temporary, buka tab Job Details di Logview dan pilih tampilan Progress Chart. Nama tabel temporary yang dibuat otomatis muncul pada node output bagan alir, dengan format seperti j.default.tmp_mf_<timestamp>. Anda dapat menggunakan nama tabel ini untuk melakukan kueri terhadap hasil sebagian.

Tetapkan timeout untuk hasil sebagian

Untuk pekerjaan yang rentan terhadap tugas long-tail atau loop tak hingga, Anda dapat menetapkan timeout. Saat timeout tercapai, sistem akan menghentikan pekerjaan tetapi tetap menyimpan hasil dari instans Fuxi yang berhasil. Anda kemudian dapat mengambil hasil sebagian ini dari tabel tujuan atau tabel temporary.

Aktifkan fitur partial submission dan tetapkan timeout pekerjaan:

options.sql.settings = {
    "odps.sql.always.commit.result": "true",  # Aktifkan partial submission.
    "odps.sql.job.max.time.hours": "1"        # Tetapkan timeout menjadi 1 jam.
}
Catatan

Jika pekerjaan gagal sebelum timeout, hasil dari instans Fuxi yang berhasil tetap disimpan.

Penagihan

Pay-as-you-go

Pekerjaan MaxFrame dalam mode pay-as-you-go ditagih berdasarkan Jam-CU aktual yang dikonsumsi.

Anda dapat mengunduh informasi penggunaan detail dari halaman Usage Details. Untuk informasi selengkapnya, lihat Analyze MaxCompute billing and usage details.

Subscription

Pekerjaan MaxFrame dalam mode subscription mengonsumsi resource dari kelompok sumber daya langganan berdasarkan jumlah yang diminta. Tidak ada biaya tambahan yang dikenakan.