全部产品
Search
文档中心

MaxCompute:Instance Tugas

更新时间:Jul 02, 2025

Tugas, seperti tugas SQL, merupakan unit komputasi dasar di MaxCompute. Topik ini menjelaskan operasi dasar pada instance tugas dalam PyODPS.

Operasi Dasar

Ketika sebuah tugas dipicu, sebuah instance MaxCompute dibuat untuk tugas tersebut. Untuk informasi lebih lanjut, lihat Instance. Anda dapat melakukan operasi berikut pada instance MaxCompute:

  • list_instances(): Memperoleh semua instance dalam sebuah Proyek.

  • exist_instance(): Memeriksa apakah sebuah instance ada.

  • get_instance(): Memperoleh sebuah instance.

  • stop_instance(): Menghentikan sebuah instance. Anda hanya dapat menghentikan instance yang sedang berjalan. Jika mencoba menghentikan instance yang tidak berjalan, kesalahan akan dikembalikan.

    Catatan

    Anda juga dapat memanggil metode stop() untuk menghentikan sebuah instance. Sebagai contoh, Anda dapat menjalankan o.get_instance('instance id').stop.

Contoh

  • Memperoleh ID dari sebuah instance.

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

    print(o.exist_instance('my_instance_id'))

Memperoleh URL Logview dari sebuah Instance

  • Untuk instance tugas SQL, Anda dapat memanggil metode get_logview_address untuk memperoleh URL Logview dari instance tersebut.

    # Jalankan pernyataan SQL untuk memperoleh instance. Kemudian, panggil metode get_logview_address() untuk memperoleh URL Logview dari instance.
    instance = o.run_sql('desc pyodps_iris')
    print(instance.get_logview_address())
    
    # Memperoleh URL Logview dari instance dengan ID tertentu.
    instance = o.get_instance('my_instance_id')
    print(instance.get_logview_address())
  • Untuk instance Platform Pembelajaran Mesin untuk AI (PAI), Anda harus mencantumkan sub-instance dari instance tersebut dan kemudian memperoleh URL Logview dari sub-instance 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()))

Memperoleh Status dari sebuah Instance

Sebuah instance dapat berada dalam keadaan Running, Suspended, atau Terminated. Anda dapat menggunakan metode berikut untuk memperoleh status dari sebuah instance:

  • status: Memperoleh status dari sebuah instance.

  • is_terminated: Memeriksa apakah eksekusi instance saat ini selesai.

  • is_successful: Memeriksa apakah eksekusi instance saat ini berhasil. Jika instance sedang berjalan atau gagal, False akan dikembalikan.

Contoh kode:

  • Memperoleh status dari sebuah instance.

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

    Contoh respons:

    Status.TERMINATED
    Terminated
  • Memeriksa apakah eksekusi sebuah instance selesai.

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

    Jika True dikembalikan, eksekusi telah selesai.

Catatan

Anda dapat memanggil metode wait_for_completion agar sistem mengembalikan status hingga eksekusi instance selesai. Efek dari metode wait_for_success serupa dengan efek dari metode wait_for_completion. Namun, jika Anda memanggil metode wait_for_success, kesalahan akan dikembalikan jika instance gagal.

Menjalankan Operasi pada Sub-instance

Sebuah instance yang sedang berjalan mungkin berisi satu atau lebih sub-instance. Anda dapat memanggil metode berikut untuk menjalankan operasi pada sub-instance:

  • get_task_names: Memperoleh semua sub-instance. Metode ini mengembalikan nama dari semua sub-instance.

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

    Contoh respons:

    ['jdbc_sql_task']
  • get_task_result: Memperoleh hasil eksekusi dari sebuah sub-instance. Metode ini mengembalikan hasil eksekusi setiap sub-instance dalam bentuk kamus. Contoh kode:

    • Memperoleh nama dari semua sub-instance.

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

      Contoh respons:

      ['AnonymousSQLTask']
    • Memperoleh hasil eksekusi dari sebuah sub-instance.

      print(instance.get_task_result('AnonymousSQLTask'))

      Contoh respons:

      "sepallength","sepalwidth","petallength","petalwidth","name"
      4.9,3.0,1.4,0.2,"Iris-setosa"
    • Memperoleh hasil eksekusi dari sub-instance.

      print(instance.get_task_results())

      Contoh respons:

      OrderedDict([('AnonymousSQLTask', '"sepallength","sepalwidth","petallength","petalwidth","name"\n4.9,3.0,1.4,0.2,"Iris-setosa"\n')])
  • get_task_progress: Memperoleh kemajuan saat ini dari sebuah sub-instance ketika instance 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)

    Contoh respons:

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