Tüm Ürünler
Search
Belge Merkezi

MaxCompute:DataWorks içinde PyODPS kullanma

Son Güncelleme:Oct 04, 2026

MaxCompute için Python SDK'sı olan PyODPS, DataWorks içinde PyODPS görevleri geliştirmenize ve çalıştırmanıza olanak tanır. Bu sayfada sınırlamalar, temel iş akışı ve basit kullanım örnekleri ele alınmaktadır.

Sınırlamalar

  • Kullanım sınırları

    Got killed hatası alırsanız süreç bellek sınırını aştığı için sonlandırılmış demektir. DataWorks içinde yerel işlem yapmak amacıyla bir PyODPS düğümünde veri indirmeyin. Bunun yerine veri işleme görevlerini dağıtık yürütme için MaxCompute'a gönderin. Ayrıntılar için bkz. Önlemler: PyODPS çalıştırmak için tüm verileri yerel olarak indirmeyin.

  • Paket destek sınırları

    • DataWorks içindeki PyODPS düğümleri matplotlib gibi bazı paketleri içermez. Bu durum aşağıdaki özellikleri kısıtlar:

      • DataFrame'in plot işlevi.

      • DataFrame kullanıcı tanımlı işlevlerinin (UDF) çalıştırılması için MaxCompute'a gönderilmesi gerekir. Python sanal alanı yalnızca saf Python kitaplıklarını ve NumPy'yi üçüncü taraf kitaplık olarak destekler; bu nedenle Pandas'ı doğrudan kullanamazsınız.

      • UDF içermeyen ve DataWorks içinde çalışan kodlarda önceden yüklenmiş NumPy ve Pandas paketlerini kullanabilirsiniz. İkili kod içeren diğer üçüncü taraf paketler desteklenmez.

    • DataWorks içindeki PyODPS düğümleri Python atexit paketini desteklemez. Benzer işlevselliği uygulamak için bir try-finally bloğu kullanın.

  • Okunacak veri kaydı sayısı sınırı

    Varsayılan olarak DataWorks içindeki PyODPS düğümleri için options.tunnel.use_instance_tunnel parametresi False değerine ayarlanır ve okuma işlemi en fazla 10.000 kayıtla sınırlanır. Daha fazla kayıt okumak için instance tunnel özelliğini genel olarak etkinleştirmeniz ve options.tunnel.use_instance_tunnel parametresini True olarak ayarlamanız gerekir.

Yordam

  1. Bir PyODPS düğümü oluşturun.

    DataWorks içindeki Data Development sayfasına giderek bir PyODPS düğümü oluşturun. PyODPS düğümleri iki türde sunulur:

    • Python 2 tabanlı PyODPS 2.

    • Python 3 tabanlı PyODPS 3.

    Kullandığınız Python sürümüne göre bir PyODPS düğümü oluşturun. Ayrıntılı adımlar için bkz. PyODPS 2 görevi geliştirme ve PyODPS 3 görevi geliştirme.

  2. PyODPS görevi için kod geliştirin.

    Düğümü oluşturduktan sonra PyODPS'in temel yeteneklerini öğrenmek için aşağıdaki bölümlerdeki örneklere bakın.

    PyODPS kullanımı hakkında daha fazla bilgi için bkz. Temel işlemlere genel bakış ve DataFrame (önerilmez). Basit bir uçtan uca işlem gerçekleştirmek için Jieba Çince kelime segmentasyonu için PyODPS düğümü kullanma bölümündeki örneği de izleyebilirsiniz.

  3. Zamanlama özelliklerini yapılandırın, ardından düğümü kaydedin, gönderin ve periyodik olarak çalışmasını sağlamak üzere dağıtın.

MaxCompute giriş noktası

Bir PyODPS düğümünde DataWorks, MaxCompute giriş noktası olarak odps veya o adlı bir genel değişken sağlar. Bu değişkeni manuel olarak tanımlamanız gerekmez.

# Check whether the pyodps_iris table exists.
print(o.exist_table('pyodps_iris'))

Kod True değerini döndürür; bu da pyodps_iris tablosunun mevcut olduğunu gösterir.

Not

Giriş noktası nesnesi o için kullanılan kimlik bilgileri yalnızca MaxCompute'a erişebilir, diğer bulut hizmetlerine erişemez. DataWorks, bir PyODPS düğümünün yürütülmesi sırasında yalnızca bu kimlik bilgilerini sağlar. o.from_global gibi yöntemleri çağırarak bu nesne üzerinden ek kimlik bilgileri alamazsınız.

SQL çalıştırma

Genel yetenekler

  • execute_sql() veya run_sql() gibi yöntemleri kullanarak bir PyODPS düğümünde SQL deyimlerini çalıştırabilirsiniz. Bu yöntemler öncelikle Veri Tanımlama Dili (DDL) ve Veri İşleme Dili (DML) deyimlerini destekler.

    Not

    execute_sql() ve run_sql() yöntemleri tüm SQL deyimlerini desteklemez. DDL veya DML dışındaki deyimler için başka yöntemler kullanmanız gerekir. Örneğin, GRANT veya REVOKE deyimlerini çalıştırmak için run_security_query yöntemini, API komutlarını çalıştırmak için ise run_xflow veya execute_xflow yöntemini kullanın.

  • Bir PyODPS düğümünde SQL çalıştırma sonuçlarını okumak için open_reader() yöntemini kullanın.

Bir PyODPS düğümünde SQL ile ilgili işlemler hakkında daha fazla bilgi için bkz. SQL.

Önlemler: veri biçimi ve kayıt sınırları

Geçmiş uyumluluk nedenleriyle Instance Tunnel DataWorks içinde varsayılan olarak etkin değildir. Sonuç olarak, instance.open_reader varsayılan olarak Result arayüzünü kullanır; bu arayüz 10.000 kayıtla sınırlıdır ve karmaşık veri türleriyle ilgili sorunlara yol açabilir. Projenizde bir veri koruma mekanizması yoksa ve tüm veriler üzerinde yineleme yapmanız veya Array gibi karmaşık veri türlerini okumanız gerekiyorsa Instance Tunnel'ı etkinleştirin ve limit özelliğini devre dışı bırakın.

  • Çalışma zamanında limit özelliğini devre dışı bırakma

    Instance Tunnel'ı genel olarak etkinleştirmek ve limit kısıtlamasını devre dışı bırakmak için aşağıdaki deyimi kullanın.

    options.tunnel.use_instance_tunnel = True
    options.tunnel.limit_instance_tunnel = False  # Disable the limit to read all data.
    with instance.open_reader() as reader:
        # You can read all data through Instance Tunnel.
        # You can use reader.count to get the record count.
  • Yalnızca geçerli Reader için limit özelliğini devre dışı bırakma

    Ayrıca open_reader çağrısına tunnel=True ekleyerek yalnızca geçerli open_reader çağrısı için instance tunnel özelliğini etkinleştirebilirsiniz. İlgili çağrı için limit kısıtlamasını devre dışı bırakmak amacıyla limit=False ekleyin.

    with instance.open_reader(tunnel=True, limit=False) as reader:
        # This open_reader call uses the Instance Tunnel interface and can read all data.

Instance Tunnel ve veri okuma sınırları hakkında daha fazla bilgi için bkz. SQL çalıştırma sonuçlarını okuma.

DataFrame

  • Çalıştırma

    DataWorks içinde DataFrame işlemleri, execute veya persist gibi bir anında çalıştırma yönteminin açıkça çağrılmasını gerektirir.

    # Call an immediate execution method to process each record and print all data from the pyodps_iris table where iris.sepalwidth is less than 3.
    from odps.df import DataFrame
    iris = DataFrame(o.get_table('pyodps_iris'))
    for record in iris[iris.sepalwidth < 3].execute():  
        print(record)
  • Ayrıntılı çıktı

    Varsayılan olarak DataWorks içinde options.verbose seçeneği etkindir ve düğüm yürütme sırasında Logview URL'si gibi ayrıntılı bilgileri yazdırır. Bu ayrıntıların görüntülenip görüntülenmeyeceğini denetlemek için bu seçeneği yapılandırabilirsiniz.

DataFrame işlemlerine ilişkin daha fazla örnek için bkz. DataFrame (önerilmez).

Zamanlama parametreleri

Bir PyODPS düğümünde zamanlama parametreleri, bir görev çalıştırmasının iş tarihi gibi değerleri almanızı sağlar. Zamanlama parametrelerinin tanımı ve kullanımı SQL düğümleriyle aynı olsa da kod içindeki başvuru şekilleri farklıdır.

  • SQL düğümleri kodda doğrudan ${param_name} gibi bir dize kullanır.

  • ${param_name} için dize değiştirmesi yapmak yerine DataWorks, düğüm çalışmadan önce args adlı bir genel sözlük ekler. Bu sözlüğe erişerek bir zamanlama parametresinin değerini alabilirsiniz; örneğin args[param_name].

Örneğin, Basic properties > Parameters bölmesinde ds=${yyyymmdd} zamanlama parametresini ayarlarsanız bu parametreyi kodunuzda aşağıdaki gibi alabilirsiniz:

  • ds parametresinin değerini alın.

    print('ds=' + args['ds'])
    # Returns the time of ds, for example, ds=20161116
  • ds=${yyyymmdd} adlı bir bölümdeki bir tablodan veri alın.

    o.get_table('table_name').get_partition('ds=' + args['ds'])
    # Obtain data from the ds partition of the table_name table.

Zamanlama parametreleri hakkında daha fazla bilgi için bkz. Zamanlama parametrelerini yapılandırma ve kullanma.

Çalışma zamanı parametre ipuçları

Bir görev için çalışma zamanı parametrelerini ayarlamak amacıyla bir dict kabul eden hints parametresini kullanın.

o.execute_sql('select * from pyodps_iris', hints={'odps.sql.mapper.split.size': 16})

sql.settings ayarını genel olarak da yapılandırabilirsiniz. Yapılandırıldığında bu ayarlar her çalıştırmaya otomatik olarak uygulanır.

from odps import options
options.sql.settings = {'odps.sql.mapper.split.size': 16}
o.execute_sql('select * from pyodps_iris')  # Hints are added based on the global configuration.

Üçüncü taraf paketler

DataWorks düğümleri aşağıdaki üçüncü taraf paketlerle önceden yüklenmiş olarak gelir.


Paket adı


Python 2 sürümü


Python 3 sürümü


requests


2.11.1


2.26.0


numpy


1.16.6


1.18.1


pandas


0.24.2


1.0.5


scipy


0.19.0


1.3.0


scikit_learn


0.18.1


0.22.1


pyarrow


0.16.0


2.0.0


lz4


2.1.4


3.1.10


zstandard


0.14.1


0.17.0

Önceden yüklenmemiş bir pakete ihtiyacınız varsa bir MaxCompute kaynağından üçüncü taraf paketi yüklemek için load_resource_package yöntemini kullanın. Önce pyodps-pack ile bir paket arşivi oluşturun, ardından içeriğini içe aktarmadan önce yüklemek için load_resource_package yöntemini kullanın. pyodps-pack hakkında daha fazla bilgi için bkz. PyODPS için üçüncü taraf paketi oluşturma ve PyODPS içinde üçüncü taraf paketi kullanma.

Not

Python 2 düğümü için bir paket oluştururken pyodps-pack komutuna --dwpy27 parametresini ekleyin.

Örnek:

  1. ipaddress paketini paketlemek için aşağıdaki komutu kullanın.

    pyodps-pack -o ipaddress-bundle.tar.gz ipaddress
  2. ipaddress-bundle.tar.gz dosyasını bir kaynak olarak yükledikten ve gönderdikten sonra ipaddress paketini bir PyODPS 3 düğümünde aşağıdaki gibi kullanabilirsiniz:

    load_resource_package("ipaddress-bundle.tar.gz")
    import ipaddress

DataWorks, indirilen paketlerin toplam boyutunu 100 MB ile sınırlar. Paketinizden önceden yüklenmiş paketleri hariç tutmak için pyodps-pack aracının --exclude parametresini kullanın. Örneğin, aşağıdaki komut numpy ve pandas paketlerini hariç tutar.

pyodps-pack -o bundle.tar.gz --exclude numpy --exclude pandas <YOUR_PACKAGE>

Diğer hesaplar

Farklı bir hesapla MaxCompute'a erişmek için MaxCompute giriş noktası nesnesindeki as_account yöntemini kullanın. Bu yöntem, varsayılan o örneğinden bağımsız yeni bir giriş noktası nesnesi oluşturur.

Önemli

as_account yöntemi PyODPS 0.11.3 veya sonraki bir sürümü gerektirir. DataWorks ortamınız daha eski bir sürüm çalıştırıyorsa bu yöntemi kullanamazsınız.

Yordam

  1. Diğer kullanıcıya gerekli proje izinlerini verin. Daha fazla bilgi için bkz. Ek: Başka bir hesaba izin verme.

  2. PyODPS düğümünde hesap değiştirmek ve yeni bir giriş noktası nesnesi oluşturmak için as_account yöntemini kullanın.

    import os
    # Make sure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set to your AccessKey ID,
    # and the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set to your AccessKey Secret.
    # We recommend that you do not use the AccessKey ID and AccessKey Secret strings directly.
    new_odps = o.as_account(
        os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
    )
  3. Hesabın değiştirilip değiştirilmediğini kontrol edin.

    Geçerli kullanıcı bilgilerini sorgulamak için aşağıdaki deyimi ekleyin. Çıktıda diğer kullanıcının UID'si görünüyorsa hesap değişikliği başarılı olmuştur.

    print(new_odps.get_project().current_user)
    Not

    new_odps yeni hesabın giriş noktası nesnesini temsil eder.

Örnek

  1. Bir tablo oluşturun ve veri içe aktarın.

    1. Iris veri kümesini iris.data olarak indirin ve iris.csv olarak yeniden adlandırın.

    2. pyodps_iris adlı bir tablo oluşturun ve iris.csv veri kümesini yükleyin. Talimatlar için bkz. Tablo oluşturma ve veri yükleme.

      Aşağıda tablo oluşturma deyimi verilmiştir.

      CREATE TABLE if not exists pyodps_iris
      (
      sepallength  DOUBLE comment 'sepal length (cm)',
      sepalwidth   DOUBLE comment 'sepal width (cm)',
      petallength  DOUBLE comment 'petal length (cm)',
      petalwidth   DOUBLE comment 'petal width (cm)',
      name         STRING comment 'species'
      );
  2. Gerekli izinleri vermek için bir ODPS SQL düğümü oluşturun. Daha fazla bilgi için bkz. Ek: Başka bir hesaba izin verme.

  3. Hesap değiştirmek için bir PyODPS düğümü oluşturun. Aşağıdaki kod bir örnek sunar. Daha fazla bilgi için bkz. PyODPS 3 görevi geliştirme.

    from odps import ODPS
    import os
    import sys
    # Make sure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set to the user's AccessKey ID,
    # and the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set to the user's AccessKey Secret.
    # We recommend that you do not use the AccessKey ID and AccessKey Secret strings directly.
    os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] = '<AccessKey ID>'
    os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] = '<AccessKey Secret>'
    od = o.as_account(os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), 
             os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
            )
    iris = DataFrame(od.get_table('pyodps_iris'))
    # Print the output by using a conditional statement.
    with od.execute_sql('select * from pyodps_iris WHERE sepallength > 5 ').open_reader() as reader4:
        print(reader4.raw)
        for record in reader4:
            print(record["sepallength"],record["sepalwidth"],record["petallength"],record["petalwidth"],record["name"])
    # Print the UID of the current user.
    print(od.get_project().current_user)
  4. Kodu çalıştırın ve sonucu görüntüleyin.

    Executing user script with PyODPS 0.11.4.post0
    "sepallength","sepalwidth","petallength","petalwidth","name"
    5.4,3.9,1.7,0.4,"Iris-setosa"
    5.4,3.7,1.5,0.2,"Iris-setosa"
    5.8,4.0,1.2,0.2,"Iris-setosa"
    5.7,4.4,1.5,0.4,"Iris-setosa"
    5.4,3.9,1.3,0.4,"Iris-setosa"
    5.1,3.5,1.4,0.3,"Iris-setosa"
    5.7,3.8,1.7,0.3,"Iris-setosa"
    5.1,3.8,1.5,0.3,"Iris-setosa"
    5.4,3.4,1.7,0.2,"Iris-setosa"
    5.1,3.7,1.5,0.4,"Iris-setosa"
    5.1,3.3,1.7,0.5,"Iris-setosa"
    5.2,3.5,1.5,0.2,"Iris-setosa"
    5.2,3.4,1.4,0.2,"Iris-setosa"
    5.4,3.4,1.5,0.4,"Iris-setosa"
    5.2,4.1,1.5,0.1,"Iris-setosa"
    5.5,4.2,1.4,0.2,"Iris-setosa"
    5.5,3.5,1.3,0.2,"Iris-setosa"
    5.1,3.4,1.5,0.2,"Iris-setosa"
    5.1,3.8,1.9,0.4,"Iris-setosa"
    5.1,3.8,1.6,0.2,"Iris-setosa"
    5.3,3.7,1.5,0.2,"Iris-setosa"
    7.0,3.2,4.7,1.4,"Iris-versicolor"
    6.4,3.2,4.5,1.5,"Iris-versicolor"
    6.9,3.1,4.9,1.5,"Iris-versicolor"
    5.5,2.3,4.0,1.3,"Iris-versicolor"
    6.5,2.8,4.6,1.5,"Iris-versicolor"
    5.7,2.8,4.5,1.3,"Iris-versicolor"
    6.3,3.3,4.7,1.6,"Iris-versicolor"
    6.6,2.9,4.6,1.3,"Iris-versicolor"
    5.2,2.7,3.9,1.4,"Iris-versicolor"
    5.9,3.0,4.2,1.5,"Iris-versicolor"
    6.0,2.2,4.0,1.0,"Iris-versicolor"
    6.1,2.9,4.7,1.4,"Iris-versicolor"
    5.6,2.9,3.6,1.3,"Iris-versicolor"
    6.7,3.1,4.4,1.4,"Iris-versicolor"
    5.6,3.0,4.5,1.5,"Iris-versicolor"
    5.8,2.7,4.1,1.0,"Iris-versicolor"
    6.2,2.2,4.5,1.5,"Iris-versicolor"
    5.6,2.5,3.9,1.1,"Iris-versicolor"
    5.9,3.2,4.8,1.8,"Iris-versicolor"
    6.1,2.8,4.0,1.3,"Iris-versicolor"
    6.3,2.5,4.9,1.5,"Iris-versicolor"
    6.1,2.8,4.7,1.2,"Iris-versicolor"
    6.4,2.9,4.3,1.3,"Iris-versicolor"
    6.6,3.0,4.4,1.4,"Iris-versicolor"
    6.8,2.8,4.8,1.4,"Iris-versicolor"
    6.7,3.0,5.0,1.7,"Iris-versicolor"
    6.0,2.9,4.5,1.5,"Iris-versicolor"
    5.7,2.6,3.5,1.0,"Iris-versicolor"
    5.5,2.4,3.8,1.1,"Iris-versicolor"
    5.5,2.4,3.7,1.0,"Iris-versicolor"
    5.8,2.7,3.9,1.2,"Iris-versicolor"
    6.0,2.7,5.1,1.6,"Iris-versicolor"
    5.4,3.0,4.5,1.5,"Iris-versicolor"
    6.0,3.4,4.5,1.6,"Iris-versicolor"
    6.7,3.1,4.7,1.5,"Iris-versicolor"
    6.3,2.3,4.4,1.3,"Iris-versicolor"
    5.6,3.0,4.1,1.3,"Iris-versicolor"
    5.5,2.5,4.0,1.3,"Iris-versicolor"
    5.5,2.6,4.4,1.2,"Iris-versicolor"
    6.1,3.0,4.6,1.4,"Iris-versicolor"
    5.8,2.6,4.0,1.2,"Iris-versicolor"
    5.6,2.7,4.2,1.3,"Iris-versicolor"
    5.7,3.0,4.2,1.2,"Iris-versicolor"
    5.7,2.9,4.2,1.3,"Iris-versicolor"
    6.2,2.9,4.3,1.3,"Iris-versicolor"
    5.1,2.5,3.0,1.1,"Iris-versicolor"
    5.7,2.8,4.1,1.3,"Iris-versicolor"
    6.3,3.3,6.0,2.5,"Iris-virginica"
    5.8,2.7,5.1,1.9,"Iris-virginica"
    7.1,3.0,5.9,2.1,"Iris-virginica"
    6.3,2.9,5.6,1.8,"Iris-virginica"
    6.5,3.0,5.8,2.2,"Iris-virginica"
    7.6,3.0,6.6,2.1,"Iris-virginica"
    7.3,2.9,6.3,1.8,"Iris-virginica"
    6.7,2.5,5.8,1.8,"Iris-virginica"
    7.2,3.6,6.1,2.5,"Iris-virginica"
    6.5,3.2,5.1,2.0,"Iris-virginica"
    6.4,2.7,5.3,1.9,"Iris-virginica"
    6.8,3.0,5.5,2.1,"Iris-virginica"
    5.7,2.5,5.0,2.0,"Iris-virginica"
    5.8,2.8,5.1,2.4,"Iris-virginica"
    6.4,3.2,5.3,2.3,"Iris-virginica"
    6.5,3.0,5.5,1.8,"Iris-virginica"
    7.7,3.8,6.7,2.2,"Iris-virginica"
    7.7,2.6,6.9,2.3,"Iris-virginica"
    6.0,2.2,5.0,1.5,"Iris-virginica"
    6.9,3.2,5.7,2.3,"Iris-virginica"
    5.6,2.8,4.9,2.0,"Iris-virginica"
    7.7,2.8,6.7,2.0,"Iris-virginica"
    6.3,2.7,4.9,1.8,"Iris-virginica"
    6.7,3.3,5.7,2.1,"Iris-virginica"
    7.2,3.2,6.0,1.8,"Iris-virginica"
    6.2,2.8,4.8,1.8,"Iris-virginica"
    6.1,3.0,4.9,1.8,"Iris-virginica"
    6.4,2.8,5.6,2.1,"Iris-virginica"
    7.2,3.0,5.8,1.6,"Iris-virginica"
    7.4,2.8,6.1,1.9,"Iris-virginica"
    7.9,3.8,6.4,2.0,"Iris-virginica"
    6.4,2.8,5.6,2.2,"Iris-virginica"
    6.3,2.8,5.1,1.5,"Iris-virginica"
    6.1,2.6,5.6,1.4,"Iris-virginica"
    7.7,3.0,6.1,2.3,"Iris-virginica"
    6.3,3.4,5.6,2.4,"Iris-virginica"
    6.4,3.1,5.5,1.8,"Iris-virginica"
    6.0,3.0,4.8,1.8,"Iris-virginica"
    6.9,3.1,5.4,2.1,"Iris-virginica"
    6.7,3.1,5.6,2.4,"Iris-virginica"
    6.9,3.1,5.1,2.3,"Iris-virginica"
    5.8,2.7,5.1,1.9,"Iris-virginica"
    6.8,3.2,5.9,2.3,"Iris-virginica"
    6.7,3.3,5.7,2.5,"Iris-virginica"
    6.7,3.0,5.2,2.3,"Iris-virginica"
    6.3,2.5,5.0,1.9,"Iris-virginica"
    6.5,3.0,5.2,2.0,"Iris-virginica"
    6.2,3.4,5.4,2.3,"Iris-virginica"
    5.9,3.0,5.1,1.8,"Iris-virginica"
    <User 139xxxxxxxxxxxxx>

Sorun giderme

Kodunuz yürütme sırasında yanıt vermiyor ve çıktı üretmiyorsa kodunuzun başına aşağıdaki yorum satırını ekleyin. DataWorks ardından her 30 saniyede bir tüm iş parçacıklarının yığın izlemesini yazdırır.

# -*- dump_traceback: true -*-
Not

Bu yöntem PyODPS 3 düğümleri için geçerlidir ve sürüm 0.11.4.1 veya sonraki sürümleri gerektirir.

PyODPS sürümü

Geçerli PyODPS sürümünü Python kodu çalıştırarak veya bir PyODPS görevinin çalışma zamanı günlüğünü görüntüleyerek kontrol edebilirsiniz.

  • Bir PyODPS düğümünde aşağıdaki kodu çalıştırın:

    # Enter the following code:
    import odps; print(odps.__version__)
    # Sample result
    0.11.2.3
  • Bir PyODPS görevinin çalışma zamanı günlüğünü kontrol edin. Sürüm, aşağıdaki örnekte olduğu gibi günlük çıktısında gösterilir:

    2023-07-26 15:39:53  INFO SKYNET_DAGTYPE=100:
    2023-07-26 15:39:53  INFO SKYNET_SYSTEM_ENV=dev:
    2023-07-26 15:39:53  INFO SKYNET_GMTDATE=20230726:
    2023-07-26 15:39:53  INFO SKYNET_BIZDATE=20230726:
    2023-07-26 15:39:53  INFO SKYNET_ENVTYPE=1:
    2023-07-26 15:39:53  INFO SKYNET_PROJECTID=342277:
    2023-07-26 15:39:53  INFO SKYNET_BUSINESS_ID=10756717:
    2023-07-26 15:39:53  INFO SKYNET_ARGS_ENABLE=true:
    2023-07-26 15:39:53  INFO SKYNET_ACCOUNT_ID=xxx
    2023-07-26 15:39:53  INFO TASK_SOURCE=dataworks_datastudio:
    2023-07-26 15:39:53  INFO SKYNET_REGION=xxx:
    2023-07-26 15:39:53  INFO LINK_FILE_ID=503440413:
    2023-07-26 15:39:53  INFO TASK_PLUGIN_NAME=pyodps:
    2023-07-26 15:39:53  INFO ALISA_UNIQUEKEY=xxx
    2023-07-26 15:39:53  INFO ALISA_TASK_ID=T3_xxx
    2023-07-26 15:39:53  INFO ALISA_TASK_EXEC_TARGET=group_599314507759873_dev:
    2023-07-26 15:39:53  INFO ALISA_TASK_PRIORITY=0:
    2023-07-26 15:39:53  INFO --- Invoking Shell command line now ---
    2023-07-26 15:39:53  INFO ============================================================
    Executing user script with PyODPS 0.11.4.post0
    "sepallength","sepalwidth","petallength","petalwidth","name"
    5.4,3.9,1.7,0.4,"Iris-setosa"
    5.4,3.7,1.5,0.2,"Iris-setosa"
    5.8,4.0,1.2,0.2,"Iris-setosa"

Ek: Kullanıcı izinleri verme

Başka bir Alibaba Cloud kullanıcısının (RAM kullanıcısı olmayan) DataWorks çalışma alanınızdaki projelere ve tablolara erişmesine izin vermek için bir ODPS SQL düğümü oluşturun ve aşağıdaki yetkilendirme komutlarını çalıştırın. Bir ODPS SQL düğümü oluşturma hakkında daha fazla bilgi için bkz. ODPS SQL düğümü oluşturma. İzinler hakkında daha fazla bilgi için bkz. Kullanıcılar ve izinler.

-- Add another Alibaba Cloud account user at the project level.
add user ALIYUN$<account_name>;
-- Grant the CreateInstance permission on the project.
grant CreateInstance on project <project_name> to USER ALIYUN$<account_name>;
-- Grant the Describe and Select permissions on the table.
grant Describe, Select on table <table_name> to USER ALIYUN$<account_name>;
-- View the authorization results.
show grants for ALIYUN$<account_name>;

Aşağıda show grants for ALIYUN$<account_name>; komutunun çalıştırılmasından elde edilen örnek bir yetkilendirme sonucu verilmiştir:

Authorization Type: ACL
[user/ALIYUN$:xxx.com]
A    projects/mc_xxx : CreateInstance
A    projects/mc_xxx/tables/pyodps_xxx : Describe | Select

Ek: Örnek veri

Bu konudaki örnekleri takip etmek için pyodps_iris tablosunu oluşturun ve Adım 1: Tablo oluşturma ve veri içe aktarma bölümündeki talimatları izleyerek verilerle doldurun. Bu tablo örnekler boyunca kullanılır.

İlgili konular

Son üç gün içinde DataStudio'da çalıştırılan tüm görevlerin geçmişini görüntülemek için Operating history özelliğini kullanın. Bu görünümden çalışmakta olan görevleri durdurabilir ve görev kayıtlarındaki SQL deyimlerini geçici dosyalar olarak kaydedebilirsiniz. Daha fazla bilgi için bkz. Operating history.