全部产品
Search
文档中心

MaxCompute:Prioritas Pekerjaan

更新时间:Dec 03, 2025

Topik ini menjelaskan fitur prioritas pekerjaan untuk sumber daya langganan MaxCompute serta cara mengaktifkan, mengatur, dan melihat prioritas pekerjaan.

Latar Belakang

Karena sumber daya komputasi langganan MaxCompute terbatas, sistem harus memprioritaskan alokasi sumber daya tersebut untuk pekerjaan penting selama pengembangan data. Misalnya, jika data tertentu harus dihasilkan sebelum pukul 06.00, alur kerja yang menghasilkan data tersebut harus dapat merebut sumber daya komputasi pada waktu proses.

Persyaratan ini dapat dipenuhi dengan mengatur prioritas pekerjaan untuk proyek yang menggunakan sumber daya komputasi subscription. Pengaturan ini memastikan bahwa pekerjaan berprioritas tinggi menerima sumber daya komputasi terlebih dahulu dan dapat merebut sumber daya dari pekerjaan berprioritas rendah saat dimulai.

Ikhtisar Prioritas

Setiap pekerjaan di MaxCompute memiliki prioritas dengan nilai antara 0 hingga 9. Nilai yang lebih kecil menunjukkan prioritas yang lebih tinggi. Pekerjaan berprioritas tinggi mendapatkan sumber daya komputasi sebelum pekerjaan berprioritas rendah.

Catatan:

  • MaxCompute hanya mendukung pengaturan prioritas pekerjaan untuk proyek yang menggunakan sumber daya komputasi subscription.

  • Jika fitur prioritas pekerjaan tidak diaktifkan untuk suatu proyek, prioritas default pekerjaan 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 mengaktifkan fitur prioritas dengan menjalankan perintah berikut.

setproject odps.instance.priority.enable=true;

Setelah fitur prioritas diaktifkan, prioritas semua pekerjaan dalam proyek yang menggunakan sumber daya komputasi subscription akan langsung berlaku. Namun, pengaturan prioritas yang tidak wajar dapat menyebabkan antrian pekerjaan menjadi tidak teratur.

Penting

Periksa prioritas pekerjaan yang ada di Information Schema. Jika perlu, atur ulang prioritas menjadi 9 untuk pekerjaan apa pun yang tidak memiliki prioritas 9, lalu aktifkan fitur prioritas.

Aktifkan Prioritas di Tingkat Kuota

Setelah fitur prioritas diaktifkan, prioritas pekerjaan yang berjalan pada kuota ini akan berlaku—setara dengan mengaktifkan prioritas di tingkat proyek.

Prasyarat

Prosedur

  1. Masuk ke Konsol MaxCompute dan pilih Wilayah di pojok kiri atas.

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

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

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

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

    Catatan

    Jika Type untuk kuota level-2 diatur ke Interactive, parameter Enable Priority tidak tersedia secara default.

  6. Klik OK.

Periksa Prioritas Pekerjaan

  1. Lihat 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
    ;

    Hasil berikut dikembalikan:

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

    Hasil contoh menunjukkan tiga nilai prioritas: NULL, 2, dan 9. Temukan pekerjaan dengan prioritas 2 atau NULL. Nilai NULL biasanya menunjukkan tugas Data Definition Language (DDL), yang dapat Anda abaikan.

  2. Temukan pekerjaan yang prioritasnya bukan 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 di DataWorks. Jika bidang ini tidak dikembalikan, pekerjaan tersebut tidak dikirim melalui DataWorks. Dalam kasus ini, periksa bidang owner_name dan user_agent.

    • SKYNET_ONDUTY: Menunjukkan pekerjaan periodik.

  3. Selesaikan masalah terkait prioritas pekerjaan.

    • Untuk pekerjaan yang dikirim melalui DataWorks: Jika garis dasar ditetapkan untuk suatu pekerjaan, periksa apakah garis dasar tersebut wajar. Jika tidak, hapus garis dasar tersebut. Untuk informasi selengkapnya, lihat Manajemen garis dasar.

    • Untuk pekerjaan yang tidak dikirim melalui DataWorks: Gunakan hasil yang dikembalikan untuk menemukan pemilik dan kode. Hapus pengaturan prioritas dari kode untuk mengembalikan prioritas default menjadi 9.

Atur Prioritas

Anda dapat mengatur prioritas pekerjaan dengan cara-cara berikut:

  • Metode 1: Jalankan client MaxCompute, masuk ke ruang proyek, lalu atur prioritas pekerjaan.

    Metode ini sering digunakan untuk mengatur prioritas pekerjaan kueri temporary. Contoh perintah:

    SET odps.instance.priority=values;
    -- Nilai values berkisar dari 0 hingga 9.
  • Metode 2: Jalankan client MaxCompute, masuk ke ruang proyek, lalu teruskan pernyataan SQL sebagai parameter untuk mengatur prioritas pekerjaan.

    Metode ini sering digunakan untuk mengatur prioritas pekerjaan kueri temporary. Contoh perintah:

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

    Anda dapat menggunakan metode ini untuk menerapkan pengaturan prioritas kustom. Untuk informasi selengkapnya, lihat Ikhtisar Java SDK. Contoh perintah:

    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 Akun Alibaba Cloud memiliki izin untuk mengakses semua API, yang menimbulkan risiko keamanan tinggi. 
            // Buat dan gunakan Pengguna RAM untuk panggilan API atau O&M rutin. Masuk ke Konsol RAM untuk membuat Pengguna RAM.
    		// Contoh ini menunjukkan cara menyimpan ID AccessKey dan Rahasia AccessKey dalam Variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan.
    		// Jangan hard-code ID AccessKey dan Rahasia AccessKey dalam kode Anda. Hal ini dapat menimbulkan risiko keamanan.
            Account account = new AliyunAccount(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            Odps odps = new Odps(account);
            // URL 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 Logview untuk memeriksa status eksekusi instans. Langkah ini opsional.
            System.out.println(logView.generateLogView(instance, 24)); 
            // Tunggu hingga instans selesai. Langkah ini opsional.
            instance.waitForSuccess(); 
        }
    }
  • Metode 4: Atur prioritas pekerjaan menggunakan fitur manajemen garis dasar DataWorks.

    Metode ini sering digunakan untuk memastikan pekerjaan periodik dan pekerjaan hulu-nya diprioritaskan saat menghasilkan data. Anda dapat menggunakan fitur manajemen garis dasar untuk mengatur prioritas semua pekerjaan dalam tautan data secara terpusat, tanpa harus menangani setiap pekerjaan satu per satu. Untuk informasi selengkapnya tentang fitur manajemen garis dasar DataWorks, lihat Manajemen garis dasar.

    Prioritas garis dasar di DataWorks dapat bernilai 1, 3, 5, 7, atau 8. Nilai yang lebih besar menunjukkan prioritas yang lebih tinggi. Saat Anda menggunakan fitur manajemen garis dasar DataWorks untuk mengatur prioritas pekerjaan MaxCompute, prioritas pekerjaan MaxCompute dihitung sebagai: 9 – prioritas garis dasar DataWorks.

    Catatan

    Untuk kueri temporary di DataWorks, garis dasar tidak diatur secara default. Pekerjaan MaxCompute yang diinisiasi memiliki prioritas terendah, yaitu 9.

    Untuk alur kerja DataWorks, prioritas garis dasar default-nya adalah 1. Pekerjaan MaxCompute yang diinisiasi memiliki prioritas 8.

  • Metode 5: Atur prioritas pekerjaan langsung pada node DataWorks.

    Metode ini sering digunakan untuk mengatur prioritas pekerjaan kueri temporary. Contoh perintah:

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

Lihat Prioritas

Pada halaman Logview 2.0, klik tab Json Summary. Anda dapat melihat prioritas pekerjaan pada parameter odps.instance.priority. Untuk informasi selengkapnya tentang operasi Logview 2.0, lihat Gunakan Logview 2.0 untuk melihat informasi eksekusi pekerjaan.Logview 2.0

Catatan

Prioritas yang ditampilkan dalam format XML pada halaman Logview tidak akurat. Untuk proyek yang menggunakan metode penagihan bayar sesuai pemakaian, sistem mengubah prioritas pekerjaan menjadi 9. Perubahan yang sama berlaku untuk proyek yang menggunakan sumber daya komputasi subscription tetapi tidak mengaktifkan fitur prioritas. Hal ini terjadi meskipun nilai prioritas yang diatur dalam XML bukan 9. Perubahan ini mencegah antrian yang tidak adil.