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.
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.
}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.