All Products
Search
Document Center

MaxCompute:Prioritas Pekerjaan

Last Updated:Aug 22, 2026

Ketika beberapa pekerjaan bersaing untuk sumber daya komputasi yang sama, MaxCompute menggunakan prioritas pekerjaan untuk menentukan pekerjaan mana yang mendapatkan sumber daya terlebih dahulu. Pekerjaan dengan prioritas lebih tinggi menerima sumber daya komputasi sebelum pekerjaan dengan prioritas lebih rendah dan dapat merebut kembali sumber daya dari pekerjaan berprioritas rendah yang sedang berjalan. Gunakan prioritas pekerjaan untuk melindungi alur kerja yang kritis terhadap waktu—misalnya, pekerjaan ETL yang harus selesai sebelum pukul 06.00—ketika kluster sedang sibuk menangani beban kerja yang kurang mendesak.

Cara kerja

Setiap pekerjaan MaxCompute memiliki nilai prioritas dari 0 hingga 9. Angka yang lebih kecil berarti prioritas lebih tinggi: prioritas 0 adalah yang tertinggi, dan prioritas 9 adalah yang terendah.

Ketika sumber daya komputasi terbatas, MaxCompute menjadwalkan pekerjaan berdasarkan urutan prioritas. Jika pekerjaan berprioritas tinggi tiba saat sumber daya sedang sepenuhnya digunakan oleh pekerjaan berprioritas rendah, pekerjaan tersebut akan merebut kembali sumber daya tersebut untuk mengklaim sumber daya yang dibutuhkannya.

Perilaku default saat fitur prioritas dinonaktifkan:

  • Semua pekerjaan: prioritas 9 (terendah)

  • Pekerjaan algoritma PAI: prioritas 1 (hampir tertinggi)

Prioritas NULL dalam hasil kueri biasanya menunjukkan tugas DDL, yang dapat Anda abaikan.

Prasyarat

Sebelum mengaktifkan prioritas pekerjaan, pastikan Anda telah memiliki:

  • Peran pemilik Proyek atau Super_Administrator di proyek MaxCompute

  • (Untuk pengaktifan di tingkat kuota) Templat kuota dan rencana kuota yang telah dikonfigurasi. Lihat Konfigurasi kuota

Aktifkan prioritas pekerjaan

Penting

Sebelum mengaktifkan prioritas pekerjaan, lakukan audit terhadap prioritas pekerjaan yang ada menggunakan Information Schema dan atur ulang semua nilai selain 9 menjadi 9. Melewatkan langkah ini dapat menyebabkan pekerjaan dengan pengaturan prioritas tinggi yang sudah ada langsung masuk antrian secara tidak terduga.

Periksa prioritas pekerjaan yang ada

Jalankan kueri berikut di Information Schema untuk melihat distribusi prioritas di seluruh pekerjaan dalam partisi tanggal tertentu:

SELECT  get_json_object(
            REPLACE(settings, '.', '_'),
            '$.odps_instance_priority'
        ) AS priority,
        task_type,
        COUNT(1) AS cnt
FROM    information_schema.tasks_history
WHERE   ds = '${bizdate}'  -- Ganti dengan partisi tanggal, misalnya 20200517.
GROUP BY get_json_object(
             REPLACE(settings, '.', '_'),
             '$.odps_instance_priority'
         ),
         task_type
ORDER BY cnt DESC
LIMIT   100;

Contoh output:

+----------+-----------+-----+
| priority | task_type | cnt |
+----------+-----------+-----+
| 9        | SQL       | 4   |
| NULL     | SQL       | 1   |
| 2        | SQL       | 1   |
+----------+-----------+-----+

Pekerjaan dengan prioritas NULL adalah tugas DDL — abaikan saja. Untuk pekerjaan apa pun dengan nilai prioritas selain 9 (seperti 2 pada contoh ini), identifikasi pemiliknya dan atur ulang prioritasnya sebelum mengaktifkan fitur tersebut.

Untuk menemukan detail pekerjaan dengan nilai prioritas tertentu:

SELECT  inst_id,
        owner_name,
        task_name,
        task_type,
        settings
FROM    information_schema.tasks_history
WHERE   ds = '${bizdate}'  -- Ganti dengan partisi tanggal, misalnya 20200517.
AND     get_json_object(
            REPLACE(settings, '.', '_'),
            '$.odps_instance_priority'
        ) = '${priority}'  -- Ganti dengan nilai prioritas yang ingin difilter, misalnya 2.
LIMIT   100;

Bidang utama dalam output:

Field

Description

SKYNET_ID

ID node penjadwalan DataWorks. Tidak tersedia jika pekerjaan tidak diajukan melalui DataWorks.

SKYNET_ONDUTY

Tersedia jika pekerjaan merupakan pekerjaan periodik.

owner_name

Pemilik pekerjaan. Gunakan ini untuk melacak pekerjaan non-DataWorks.

Setelah mengidentifikasi pekerjaan dengan prioritas bukan 9:

  • Pekerjaan DataWorks: Periksa apakah garis dasar terkait masuk akal. Jika tidak, hapus garis dasar tersebut. Lihat Manajemen garis dasar.

  • Pekerjaan non-DataWorks: Hubungi pemilik menggunakan owner_name dan user_agent. Hapus pengaturan prioritas dari kode pekerjaan untuk mengembalikan prioritas default menjadi 9.

Aktifkan prioritas di tingkat proyek

Hanya pemilik proyek atau pengguna dengan peran Super_Administrator yang dapat mengaktifkan prioritas. Jalankan perintah berikut di klien MaxCompute:

setproject odps.instance.priority.enable=true;

Prioritas langsung berlaku untuk semua pekerjaan dalam proyek tersebut.

Aktifkan prioritas di tingkat kuota

Mengaktifkan prioritas di tingkat kuota menerapkan penjadwalan berbasis prioritas untuk semua pekerjaan yang berjalan di bawah kuota tersebut.

  1. Masuk ke Konsol MaxCompute dan pilih wilayah.Konsol MaxCompute

  2. Di panel navigasi, pilih Manage Configurations > Quotas.

  3. Temukan kuota target dan klik Quota Configuration di kolom Actions.

  4. Di tab Basic Configurations, klik Edit Basic Configurations.

  5. Pilih opsi Enable Priority untuk kuota level-2 target.

    Jika Type kuota level-2 adalah Interactive, opsi Enable Priority tidak tersedia secara default.
  6. Klik OK.

Tetapkan prioritas pekerjaan

Pilih metode yang sesuai dengan alur kerja Anda:

Method

Best for

MaxCompute client (perintah SET)

Kueri ad hoc

MaxCompute client (flag CLI)

Kueri ad hoc melalui skrip

Java SDK

Aplikasi dengan logika prioritas kustom

Manajemen garis dasar DataWorks

Alur kerja periodik dengan persyaratan SLA

Pengaturan node DataWorks

Kueri ad hoc di DataWorks

Metode 1: Klien MaxCompute — perintah SET

Jalankan perintah ini sebelum pernyataan SQL Anda di klien MaxCompute:

SET odps.instance.priority = <value>;
-- <value> adalah bilangan bulat dari 0 (prioritas tertinggi) hingga 9 (prioritas terendah).

Metode 2: Klien MaxCompute — flag CLI

Teruskan prioritas sebagai flag saat mengirimkan pernyataan SQL:

bin/odpscmd --config=<config-file> --project=<project-name> --instance-priority=<value> -e "<sql>"

Metode 3: Java SDK

Gunakan metode odps.instances().create(task, priority) untuk menetapkan prioritas saat mengirimkan pekerjaan:

import com.aliyun.odps.Instance;
import com.aliyun.odps.LogView;
import com.aliyun.odps.Odps;
import com.aliyun.odps.OdpsException;
import com.aliyun.odps.account.Account;
import com.aliyun.odps.account.AliyunAccount;
import com.aliyun.odps.task.SQLTask;

public class OdpsPriorityDemo {
    public static void main(String[] args) throws OdpsException {
        // Muat kredensial dari variabel lingkungan.
        // Jangan pernah menyematkan kredensial AccessKey secara langsung di kode Anda.
        Account account = new AliyunAccount(
            System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        );

        Odps odps = new Odps(account);
        odps.setEndpoint("http://service.odps.aliyun.com/api");
        odps.setDefaultProject("<your-project-name>");

        SQLTask task = new SQLTask();
        task.setName("adhoc_sql_task_1");
        task.setQuery("select count(*) from aa;");

        // Kirim pekerjaan dengan prioritas 5.
        // Nilai prioritas: 0 (tertinggi) hingga 9 (terendah).
        Instance instance = odps.instances().create(task, 5);

        // Cetak URL LogView untuk memantau status pekerjaan (opsional).
        LogView logView = new LogView(odps);
        System.out.println(logView.generateLogView(instance, 24));

        // Tunggu hingga pekerjaan selesai (opsional).
        instance.waitForSuccess();
    }
}

Untuk detail lebih lanjut, lihat Ikhtisar Java SDK.

Metode 4: Manajemen garis dasar DataWorks

Gunakan metode ini ketika Anda memerlukan alur kerja periodik dan semua pekerjaan hulu-nya selesai dalam jendela SLA. Manajemen garis dasar menetapkan prioritas untuk semua pekerjaan dalam satu alur kerja sekaligus — tidak perlu mengonfigurasi setiap pekerjaan satu per satu.

Prioritas garis dasar DataWorks dan padanannya di MaxCompute:

DataWorks baseline priority

MaxCompute job priority

Notes

8 (tertinggi di DataWorks)

1

Prioritas praktis tertinggi

7

2

5

4

3

6

1 (default)

8

Default untuk alur kerja DataWorks

No baseline (ad hoc)

9

Default untuk kueri ad hoc DataWorks

Rumus konversi: Prioritas MaxCompute = 9 − prioritas garis dasar DataWorks

Untuk detail lebih lanjut, lihat Manajemen garis dasar.

Kueri ad hoc DataWorks tidak memiliki garis dasar secara default, sehingga pekerjaan MaxCompute yang diajukannya menggunakan prioritas terendah (9). Alur kerja DataWorks memiliki prioritas garis dasar default 1, sehingga pekerjaannya menggunakan prioritas 8.

Metode 5: Pengaturan node DataWorks

Tetapkan prioritas langsung di node DataWorks untuk kueri ad hoc:

set odps.instance.priority = <value>;
-- <value> adalah nilai prioritas dari 0 (tertinggi) hingga 9 (terendah).

Lihat prioritas pekerjaan

Untuk memeriksa prioritas pekerjaan tertentu, buka pekerjaan tersebut di Logview 2.0, buka tab Json Summary, lalu cari parameter odps.instance.priority.

Logview 2.0

Prioritas yang ditampilkan dalam XML pada halaman Logview tidak akurat. Untuk proyek dengan prioritas dinonaktifkan, sistem mengonversi semua nilai prioritas selain 9 menjadi 9 dalam XML untuk mencegah loncatan antrian yang tidak disengaja. Selalu gunakan tab Json Summary untuk informasi prioritas yang akurat.

Langkah berikutnya