All Products
Search
Document Center

MaxCompute:Prioritas Pekerjaan

Last Updated:Feb 27, 2026

Topik ini menjelaskan fitur prioritas pekerjaan di MaxCompute serta cara mengaktifkan, menetapkan, dan melihat prioritas pekerjaan.

Latar Belakang

MaxCompute memiliki sumber daya komputasi yang terbatas. Selama pengembangan data, sistem harus memprioritaskan pekerjaan kritis agar mendapatkan sumber daya yang dibutuhkan. Misalnya, jika data tertentu harus siap pada pukul 06.00 pagi, rangkaian pekerjaan—atau alur kerja—yang menghasilkan data tersebut harus dapat mengklaim sumber daya komputasi lebih awal daripada pekerjaan lainnya.

Anda dapat memenuhi kebutuhan ini dengan menetapkan prioritas pekerjaan di tingkat proyek. Pekerjaan berprioritas lebih tinggi dialokasikan sumber daya komputasi terlebih dahulu. Saat pekerjaan berprioritas tinggi dimulai, pekerjaan tersebut dapat merebut sumber daya dari pekerjaan berprioritas lebih rendah.

Ikhtisar prioritas

Setiap pekerjaan di MaxCompute memiliki nilai prioritas dari 0 hingga 9. Angka yang lebih kecil menunjukkan prioritas yang lebih tinggi. Pekerjaan berprioritas lebih tinggi dialokasikan sumber daya komputasi sebelum pekerjaan berprioritas lebih rendah.

Saat fitur prioritas pekerjaan dinonaktifkan, prioritas default untuk semua pekerjaan dalam suatu proyek adalah 9. Untuk pekerjaan algoritma PAI, prioritas default-nya adalah 1.

Aktifkan prioritas

Aktifkan prioritas di tingkat proyek

Hanya pemilik proyek atau pengguna dengan peran Super_Administrator yang dapat menjalankan perintah berikut untuk mengaktifkan fitur prioritas.

setproject odps.instance.priority.enable=true;

Setelah Anda mengaktifkan fitur prioritas, semua pekerjaan dalam proyek langsung menggunakan prioritas. Namun, jika prioritas ditetapkan secara tidak tepat, pekerjaan mungkin masuk antrian secara tidak terduga.

Penting

Sebelum mengaktifkan fitur prioritas, periksa prioritas pekerjaan yang ada menggunakan Information Schema. Kemudian, jika diperlukan, atur ulang semua prioritas yang bukan 9 menjadi 9. Setelah itu, aktifkan fitur prioritas.

Aktifkan prioritas di tingkat kuota

Setelah Anda mengaktifkan fitur prioritas, pekerjaan yang dijalankan di bawah kuota ini akan menggunakan prioritas. Cara kerjanya sama seperti mengaktifkan prioritas di tingkat proyek.

Sebelum mengaktifkan prioritas, pastikan Anda telah membuat templat kuota dan rencana kuota. Untuk informasi selengkapnya, lihat Konfigurasi kuota.

Prosedur

  1. Login ke Konsol MaxCompute, lalu pilih wilayah di pojok kiri atas.

  2. Pada panel navigasi di sebelah kiri, pilih Manage Configurations > Quotas.

  3. Pada halaman Quotas, temukan kuota target lalu klik Quota Configuration di kolom Actions.

  4. Pada halaman Quota Configuration, klik tab Basic Configurations, lalu klik Edit Basic Configurations.

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

    Catatan

    Ketika tipe Type kuota level kedua adalah Interactive, parameter Enable Priority tidak tersedia secara default.

  6. Klik OK.

Periksa prioritas pekerjaan

  1. Statistik Distribusi Prioritas Pekerjaan

    Contoh perintah:

    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}' -- bizdate adalah partisi tanggal.
    GROUP BY get_json_object(
                 REPLACE(settings, '.', '_')
                 ,'$.odps_instance_priority'
             )
             ,task_type
    ORDER BY cnt DESC
    LIMIT   100
    ;

    Tanggapan sebagai berikut:

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

    Contoh ini menunjukkan prioritas NULL, 2, dan 9. Identifikasi pekerjaan dengan prioritas 2 atau NULL. NULL biasanya berarti tugas DDL, yang dapat Anda abaikan.

  2. Temukan pekerjaan dengan nilai prioritas selain 9.

    Contoh perintah:

    SELECT  inst_id
            ,owner_name
            ,task_name
            ,task_type
            ,settings
    FROM    information_schema.tasks_history
    WHERE   ds = '${bizdate}'
    AND     get_json_object(REPLACE(settings, '.', '_'), '$.odps_instance_priority') = '${priority}'
    LIMIT   100
    ;
    • bizdate: Partisi tanggal, misalnya 20200517.

    • priority: Nilai prioritas selain 9, misalnya 2.

    Hasil berikut dikembalikan:

    +---------+------------+-----------+-----------+----------+
    | inst_id | owner_name | task_name | task_type | settings |
    +---------+------------+-----------+-----------+----------+
    | 20200517160200907g4jm**** | ALIYUN$odps_dev_****@prod.trusteeship.aliyunid.com | console_query_task_158973132**** | SQL       | {"SKYNET_ID": "21000041****", "odps.instance.priority": "2", "SKYNET_ONDUTY": "113058643178****", "user_agent": "JavaSDK Revision:33acd11 Version:0.30.9 JavaVersion:1.8.0_112 CLT(0.30.2 : 9da012b); Linux(/)", "biz_id": "210000416174_20200517_211843317416_210033365461_1_habai_test_1130586431784115_39419845061****", "SKYNET_NODENAME": "test_priority"} |
    +---------+------------+-----------+-----------+----------+
    • SKYNET_ID: ID node penjadwalan DataWorks. Jika bidang ini tidak ada, pekerjaan tersebut tidak diajukan melalui DataWorks. Gunakan bidang owner_name dan user_agent untuk mengidentifikasi sumbernya.

    • SKYNET_ONDUTY: Menunjukkan pekerjaan periodik.

  3. Tinjau prioritas pekerjaan.

    • Pekerjaan yang diajukan melalui DataWorks: Jika pekerjaan memiliki garis dasar, periksa apakah garis dasar tersebut masuk akal. Jika tidak, hapus garis dasar tersebut. Untuk informasi selengkapnya, lihat Manajemen garis dasar.

    • Pekerjaan yang tidak diajukan melalui DataWorks: Gunakan hasil kueri untuk menemukan pemilik dan kode. Hapus pengaturan prioritas dari kode untuk mengembalikan prioritas default menjadi 9.

Tetapkan prioritas

Anda dapat menetapkan prioritas pekerjaan dengan cara berikut:

  • Metode 1: Jalankan client MaxCompute, masuk ke proyek Anda, lalu tetapkan prioritas pekerjaan.

    Gunakan metode ini untuk kueri ad hoc. Contoh perintah:

    SET odps.instance.priority=values;
    -- values adalah bilangan bulat dari 0 hingga 9.
  • Metode 2: Jalankan client MaxCompute, masuk ke proyek Anda, lalu teruskan pernyataan SQL sebagai parameter untuk menetapkan prioritas pekerjaan.

    Gunakan metode ini untuk kueri ad hoc. Contoh perintah:

    bin/odpscmd --config=xxx --project=xxx --instance-priority=x -e "<sql>"
  • Metode 3: Tetapkan prioritas pekerjaan menggunakan Java SDK.

    Gunakan metode ini untuk membangun logika prioritas kustom. Untuk informasi selengkapnya, lihat Ikhtisar Java SDK. Contoh kode:

    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 {
         	  // AccessKey Alibaba Cloud memberikan akses API penuh dan menimbulkan risiko keamanan tinggi. Kami sangat menyarankan agar Anda membuat dan menggunakan Pengguna RAM sebagai gantinya. Untuk membuat Pengguna RAM, login ke Konsol RAM.
    				// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey disimpan dalam variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan.
    				// Jangan pernah menyimpan ID AccessKey dan Rahasia AccessKey dalam kode Anda. Hal tersebut dapat mengekspos kredensial Anda.
            Account account = new AliyunAccount(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            Odps odps = new Odps(account);
            // Titik akhir cloud publik.
            String odpsUrl = "http://service.odps.aliyun.com/api"; 
            odps.setEndpoint(odpsUrl);
            odps.setDefaultProject("xxxxxxxxxx");
            SQLTask task = new SQLTask();
            task.setName("adhoc_sql_task_1");
            task.setQuery("select count(*) from aa;");
         		// 5 adalah prioritas pekerjaan.
            Instance instance = odps.instances().create(task, 5); 
            LogView logView = new LogView(odps);
            // Cetak URL LogView untuk memeriksa status instans. Opsional.
            System.out.println(logView.generateLogView(instance, 24)); 
            // Tunggu hingga instans selesai. Opsional.
            instance.waitForSuccess(); 
        }
    }
  • Metode 4: Tetapkan prioritas pekerjaan menggunakan manajemen garis dasar DataWorks.

    Gunakan metode ini untuk memastikan output tepat waktu bagi pekerjaan periodik dan pekerjaan hulu-nya. Manajemen garis dasar memungkinkan Anda menetapkan prioritas untuk semua pekerjaan dalam satu pipa data sekaligus—tanpa perlu mengonfigurasi setiap pekerjaan secara terpisah. Untuk informasi selengkapnya tentang manajemen garis dasar DataWorks, lihat Manajemen garis dasar.

    Di DataWorks, prioritas garis dasar adalah 1, 3, 5, 7, atau 8. Angka yang lebih besar menunjukkan prioritas yang lebih tinggi. Saat Anda menetapkan prioritas pekerjaan MaxCompute melalui manajemen garis dasar DataWorks, prioritas pekerjaan MaxCompute sama dengan 9 dikurangi prioritas garis dasar DataWorks.

    Catatan

    Secara default, kueri ad hoc di DataWorks tidak memiliki garis dasar. Oleh karena itu, prioritas terendah untuk pekerjaan MaxCompute yang mereka mulai adalah 9.

    Alur kerja DataWorks memiliki prioritas garis dasar default 1. Oleh karena itu, prioritas terendah untuk pekerjaan MaxCompute yang mereka mulai adalah 8.

  • Metode 5: Tetapkan prioritas pekerjaan langsung di node DataWorks.

    Gunakan metode ini untuk kueri ad hoc. Contoh perintah:

    set odps.instance.priority=x;
    -- x adalah nilai prioritas.

Lihat prioritas

Di Logview 2.0, buka tab Json Summary lalu cari parameter odps.instance.priority untuk melihat prioritas pekerjaan. Untuk operasi Logview 2.0 lainnya, lihat Lihat detail eksekusi pekerjaan menggunakan Logview 2.0. Logview 2.0

Catatan

Prioritas yang ditampilkan dalam XML pada halaman Logview tidak akurat. Untuk proyek yang menonaktifkan prioritas, sistem mengubah semua nilai prioritas selain 9 menjadi 9 dalam XML guna mencegah antrian yang tidak adil.