All Products
Search
Document Center

MaxCompute:Instans Tugas

Last Updated:Aug 22, 2026

Task, seperti task SQL, merupakan unit dasar komputasi dalam MaxCompute. Topik ini menjelaskan operasi dasar untuk instans task di PyODPS.

Operasi dasar

Saat sebuah task dijalankan, task tersebut diwujudkan sebagai instans MaxCompute, yang juga disebut sebagai instans. Berikut adalah operasi umum untuk instans:

  • list_instances(): Mengambil semua instans dalam suatu proyek.

  • exist_instance(): Memeriksa apakah suatu instans ada.

  • get_instance(): Mengambil suatu instans.

  • stop_instance(): Menghentikan suatu instans. Anda hanya dapat menghentikan instans yang sedang berjalan. Kesalahan akan dilaporkan jika Anda mencoba menghentikan instans yang berada dalam status lainnya.

    Catatan

    Memanggil metode stop pada objek Instance juga akan menghentikan instans tersebut. Contohnya: o.get_instance('instance id').stop.

Contoh

  • Mengambil ID suatu instans

    for instance in o.list_instances():
        print(instance.id)
  • Memeriksa apakah suatu instans ada

    print(o.exist_instance('my_instance_id'))

Mendapatkan alamat Logview

  • Untuk task seperti task SQL, Anda dapat memanggil metode get_logview_address pada objek Instance untuk mengambil alamat Logview.

    # Mendapatkan alamat Logview dari objek instans yang sudah ada.
    instance = o.run_sql('desc pyodps_iris')
    print(instance.get_logview_address())
    
    # Mendapatkan alamat Logview dari ID instans.
    instance = o.get_instance('my_instance_id')
    print(instance.get_logview_address())
  • Untuk task PAI, Anda dapat terlebih dahulu mendaftar subtask-nya, lalu mengambil alamat Logview untuk setiap subtask tersebut.

    instance = o.run_xflow('AppendID', 'algo_public', {'inputTableName': 'input_table', 'outputTableName': 'output_table'})
    for sub_inst_name, sub_inst in o.get_xflow_sub_instances(instance).items():
        print('%s: %s' % (sub_inst_name, sub_inst.get_logview_address()))

Status instans task

Status suatu instans dapat berupa Running, Suspended, atau Terminated. Metode berikut terkait dengan status instans:

  • status: Properti untuk mengambil status.

  • is_terminated: Mengembalikan apakah instans telah selesai dijalankan.

  • is_successful: Mengembalikan apakah instans dijalankan dengan sukses. Metode ini mengembalikan False jika task sedang berjalan atau gagal.

Kode berikut memberikan contohnya.

  • Mengambil status suatu instans.

    instance=o.get_instance('my_instance_id')
    print(instance.status)
    print(instance.status.value)

    Nilai kembali contoh:

    Status.TERMINATED
    Terminated
  • Memeriksa apakah instans saat ini telah selesai dijalankan.

    instance=o.get_instance('my_instance_id')
    from odps.models import Instance
    print(instance.status == Instance.Status.TERMINATED)

    Nilai kembali True menunjukkan bahwa instans telah selesai dijalankan.

Catatan

Memanggil metode wait_for_completion akan memblokir proses hingga instans selesai dijalankan. Metode wait_for_success juga memblokir proses, tetapi melemparkan exception jika task gagal.

Operasi subtask

Suatu instans dapat berisi satu atau beberapa subtask selama waktu proses. Subtask ini juga disebut sebagai task. Perlu diperhatikan bahwa `Task` ini berbeda dari unit dasar komputasi dalam MaxCompute. Metode berikut tersedia untuk task-task ini:

  • get_task_names: Mengambil nama semua subtask. Metode ini mengembalikan daftar nama.

    instance=o.get_instance('my_instance_id')
    instance.get_task_names()

    Nilai kembali contoh:

    ['jdbc_sql_task']
  • get_task_result: Mengambil hasil eksekusi task tertentu. Metode ini mengembalikan hasil eksekusi setiap task sebagai dictionary. Kode berikut memberikan contohnya:

    • Mengambil nama subtask.

      instance=o.execute_sql('select*frompyodps_irislimit1')
      print(instance.get_task_names())

      Nilai kembali contoh:

      ['AnonymousSQLTask']
    • Mengambil hasil eksekusi subtask.

      print(instance.get_task_result('AnonymousSQLTask'))

      Nilai kembali contoh:

      "sepallength","sepalwidth","petallength","petalwidth","name"
      4.9,3.0,1.4,0.2,"Iris-setosa"
    • Mengambil hasil subtask.

      print(instance.get_task_results())

      Nilai kembali contoh:

      OrderedDict([('AnonymousSQLTask', '"sepallength","sepalwidth","petallength","petalwidth","name"\n4.9,3.0,1.4,0.2,"Iris-setosa"\n')])
  • get_task_progress: Mengambil progres saat ini dari suatu task selama instans sedang berjalan.

    instance=o.get_instance('20160519101349613gzbzufck2')
    while not instance.is_terminated():
        for task_name in instance.get_task_names():
            print(instance.id, instance.get_task_progress(task_name).get_stage_progress_formatted_string())
            time.sleep(10)

    Nilai kembali contoh:

    20160519101349613gzbzufck2 2016-05-19 18:14:03 M1_Stg1_job0:0/1/1[100%]