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
plotiş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
Falsedeğ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 parametresiniTrueolarak ayarlamanız gerekir.
Yordam
-
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.
-
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.
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.
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.
Notexecute_sql()verun_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,GRANTveyaREVOKEdeyimlerini çalıştırmak içinrun_security_queryyöntemini, API komutlarını çalıştırmak için iserun_xflowveyaexecute_xflowyö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ırakmaInstance Tunnel'ı genel olarak etkinleştirmek ve
limitkı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ırakmaAyrıca open_reader çağrısına
tunnel=Trueekleyerek yalnızca geçerli open_reader çağrısı için instance tunnel özelliğini etkinleştirebilirsiniz. İlgili çağrı içinlimitkısıtlamasını devre dışı bırakmak amacıylalimit=Falseekleyin.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,
executeveyapersistgibi 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.verboseseç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
argsadlı 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, bölmesinde ds=${yyyymmdd} zamanlama parametresini ayarlarsanız bu parametreyi kodunuzda aşağıdaki gibi alabilirsiniz:
-
dsparametresinin 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ö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.
Python 2 düğümü için bir paket oluştururken pyodps-pack komutuna --dwpy27 parametresini ekleyin.
Örnek:
-
ipaddresspaketini paketlemek için aşağıdaki komutu kullanın.pyodps-pack -o ipaddress-bundle.tar.gz ipaddress -
ipaddress-bundle.tar.gzdosyasını bir kaynak olarak yükledikten ve gönderdikten sonraipaddresspaketini 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.
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
Diğer kullanıcıya gerekli proje izinlerini verin. Daha fazla bilgi için bkz. Ek: Başka bir hesaba izin verme.
-
PyODPS düğümünde hesap değiştirmek ve yeni bir giriş noktası nesnesi oluşturmak için
as_accountyö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') ) -
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)Notnew_odpsyeni hesabın giriş noktası nesnesini temsil eder.
Örnek
-
Bir tablo oluşturun ve veri içe aktarın.
Iris veri kümesini iris.data olarak indirin ve iris.csv olarak yeniden adlandırın.
-
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' );
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.
-
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) -
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 -*-
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.