Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Görev örnekleri

Son Güncelleme:Oct 04, 2026

SQL görevi gibi bir görev, MaxCompute içindeki temel hesaplama birimidir. Bu konuda, PyODPS'teki görev örnekleri için temel işlemler açıklanmaktadır.

Temel işlemler

Bir görev çalıştırıldığında, bir MaxCompute örneği olarak somutlaşır; bu yapı kısaca örnek olarak da adlandırılır. Örnekler için yaygın kullanılan işlemler şunlardır:

  • list_instances(): Bir projedeki tüm örnekleri getirir.

  • exist_instance(): Bir örneğin var olup olmadığını kontrol eder.

  • get_instance(): Bir örnek getirir.

  • stop_instance(): Bir örneği durdurur. Yalnızca çalışan örnekleri durdurabilirsiniz. Başka bir durumda olan bir örneği durdurmaya çalışırsanız hata alırsınız.

    Not

    Bir Instance nesnesinde stop yöntemini çağırmak da örneği durdurur. Örneğin: o.get_instance('instance id').stop.

Örnekler

  • Bir örneğin ID değerini getirin

    for instance in o.list_instances():
        print(instance.id)
  • Bir örneğin var olup olmadığını kontrol edin

    print(o.exist_instance('my_instance_id'))

Logview adresini alın

  • SQL görevleri gibi görevler için, bir Instance nesnesinde get_logview_address yöntemini çağırarak Logview adresini getirebilirsiniz.

    # Get the Logview address from an existing instance object.
    instance = o.run_sql('desc pyodps_iris')
    print(instance.get_logview_address())
    
    # Get the Logview address from an instance ID.
    instance = o.get_instance('my_instance_id')
    print(instance.get_logview_address())
  • PAI görevleri için önce alt görevleri listeleyebilir, ardından her bir alt görev için Logview adresini getirebilirsiniz.

    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()))

Görev örneği durumu

Bir örneğin durumu Running, Suspended veya Terminated olabilir. Aşağıdaki yöntemler örnek durumu ile ilgilidir:

  • status: Durumu getirmek için kullanılan bir özellik.

  • is_terminated: Örneğin çalışmayı tamamladığını belirtir.

  • is_successful: Örneğin başarıyla çalıştığını belirtir. Görev çalışıyor veya başarısız olduysa False döner.

Aşağıdaki kodda örnekler sunulmaktadır.

  • Bir örneğin durumunu getirin.

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

    Örnek dönüş değerleri:

    Status.TERMINATED
    Terminated
  • Mevcut örneğin çalışmayı tamamladığını kontrol edin.

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

    True dönüş değeri, örneğin çalışmayı tamamladığını gösterir.

Not

wait_for_completion yöntemini çağırmak, işlem örneği çalışmayı bitirene kadar engeller. wait_for_success yöntemi de işlemi engeller ancak görev başarısız olursa bir özel durum oluşturur.

Alt görev işlemleri

Bir örnek, çalışma zamanında bir veya daha fazla alt görev içerebilir. Bu alt görevlere ayrıca görev denir. Bu Task yapısının, MaxCompute içindeki temel hesaplama biriminden farklı olduğunu unutmayın. Bu görevler için aşağıdaki yöntemler kullanılabilir:

  • get_task_names: Tüm alt görevlerin adlarını getirir. Bu yöntem, adlardan oluşan bir liste döndürür.

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

    Örnek dönüş değeri:

    ['jdbc_sql_task']
  • get_task_result: Belirtilen bir görevin yürütme sonucunu getirir. Bu yöntem, her bir görevin yürütme sonucunu bir sözlük olarak döndürür. Aşağıdaki kodda örnekler sunulmaktadır:

    • Alt görev adını getirin.

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

      Örnek dönüş değeri:

      ['AnonymousSQLTask']
    • Alt görev yürütme sonucunu getirin.

      print(instance.get_task_result('AnonymousSQLTask'))

      Örnek dönüş değeri:

      "sepallength","sepalwidth","petallength","petalwidth","name"
      4.9,3.0,1.4,0.2,"Iris-setosa"
    • Alt görev sonuçlarını getirin.

      print(instance.get_task_results())

      Örnek dönüş değeri:

      OrderedDict([('AnonymousSQLTask', '"sepallength","sepalwidth","petallength","petalwidth","name"\n4.9,3.0,1.4,0.2,"Iris-setosa"\n')])
  • get_task_progress: Örnek çalışırken bir görevin mevcut ilerleme durumunu getirir.

    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)

    Örnek dönüş değeri:

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